// Automatically generated by the Flatbuffers compiler. Do not modify.
// @generated
pub mod my_game {
  use super::*;
  pub mod example {
    use super::*;
    mod color_generated;
    pub use self::color_generated::*;
    mod race_generated;
    pub use self::race_generated::*;
    mod long_enum_generated;
    pub use self::long_enum_generated::*;
    mod any_generated;
    pub use self::any_generated::*;
    mod any_unique_aliases_generated;
    pub use self::any_unique_aliases_generated::*;
    mod any_ambiguous_aliases_generated;
    pub use self::any_ambiguous_aliases_generated::*;
    mod test_generated;
    pub use self::test_generated::*;
    mod test_simple_table_with_enum_generated;
    pub use self::test_simple_table_with_enum_generated::*;
    mod vec_3_generated;
    pub use self::vec_3_generated::*;
    mod ability_generated;
    pub use self::ability_generated::*;
    mod struct_of_structs_generated;
    pub use self::struct_of_structs_generated::*;
    mod struct_of_structs_of_structs_generated;
    pub use self::struct_of_structs_of_structs_generated::*;
    mod stat_generated;
    pub use self::stat_generated::*;
    mod referrable_generated;
    pub use self::referrable_generated::*;
    mod monster_generated;
    pub use self::monster_generated::*;
    mod type_aliases_generated;
    pub use self::type_aliases_generated::*;
  } // example
  pub mod example_2 {
    use super::*;
    mod monster_generated;
    pub use self::monster_generated::*;
  } // example_2
  pub mod other_name_space {
    use super::*;
    mod from_include_generated;
    pub use self::from_include_generated::*;
    mod unused_generated;
    pub use self::unused_generated::*;
    mod table_b_generated;
    pub use self::table_b_generated::*;
  } // other_name_space
  mod in_parent_namespace_generated;
  pub use self::in_parent_namespace_generated::*;
} // my_game
mod table_a_generated;
pub use self::table_a_generated::*;
