// Automatically generated by the Flatbuffers compiler. Do not modify.
// @generated
pub mod rust_namer_test {
    use super::*;
    mod field_union_generated;
    pub use self::field_union_generated::*;
    mod game_message_generated;
    pub use self::game_message_generated::*;
    mod field_table_generated;
    pub use self::field_table_generated::*;
    mod root_table_generated;
    pub use self::root_table_generated::*;
    mod player_stat_event_generated;
    pub use self::player_stat_event_generated::*;
    mod player_spectate_generated;
    pub use self::player_spectate_generated::*;
    mod player_input_change_generated;
    pub use self::player_input_change_generated::*;
    mod game_message_wrapper_generated;
    pub use self::game_message_wrapper_generated::*;
    mod possibly_reserved_words_generated;
    pub use self::possibly_reserved_words_generated::*;
} // rust_namer_test
