// Automatically generated by the Flatbuffers compiler. Do not modify.
// @generated
pub mod namespace_a {
    use super::*;
    pub mod namespace_b {
        use super::*;
        mod union_in_nested_ns_generated;
        pub use self::union_in_nested_ns_generated::*;
        mod enum_in_nested_ns_generated;
        pub use self::enum_in_nested_ns_generated::*;
        mod table_in_nested_ns_generated;
        pub use self::table_in_nested_ns_generated::*;
        mod struct_in_nested_ns_generated;
        pub use self::struct_in_nested_ns_generated::*;
    } // namespace_b
    mod table_in_first_ns_generated;
    pub use self::table_in_first_ns_generated::*;
    mod second_table_in_a_generated;
    pub use self::second_table_in_a_generated::*;
} // namespace_a
pub mod namespace_c {
    use super::*;
    mod table_in_c_generated;
    pub use self::table_in_c_generated::*;
} // namespace_c
