#![expect(
clippy::disallowed_types,
reason = "adjudicated free-form JSON slots: serde_json::Value is workspace-banned (#1694); a generated carrier exists only where the spec leaves the slot open, and each adjudicated field's NOTE names its citation"
)]
use crate::v2_4::bmm::core::bmm_class::BmmClass;
use crate::v2_4::bmm::core::bmm_enumeration_integer::BmmEnumerationInteger;
use crate::v2_4::bmm::core::bmm_enumeration_string::BmmEnumerationString;
use crate::v2_4::bmm::core::bmm_package::BmmPackage;
use crate::v2_4::bmm::core::bmm_property::BmmProperty;
use crate::v2_4::bmm3::core::entity::bmm_model_type::BmmModelType;
use crate::v2_4::bmm3::core::feature::bmm_feature::BmmFeature;
use crate::v2_4::bmm3::core::feature::bmm_feature_group::BmmFeatureGroup;
use crate::v2_4::bmm3::core::feature::bmm_function::BmmFunction;
use crate::v2_4::bmm3::core::feature::bmm_procedure::BmmProcedure;
use crate::v2_4::bmm3::core::feature::bmm_static::BmmStatic;
use crate::v2_4::bmm3::core::literal_value::bmm_primitive_value::BmmPrimitiveValue;
use crate::v2_4::bmm3::statement::bmm_assertion::BmmAssertion;
#[doc(alias = "BMM_ENUMERATION")]
#[derive(Debug, Clone, PartialEq)]
pub struct BmmEnumerationData {
pub name: String,
pub documentation: Option<std::collections::BTreeMap<String, serde_json::Value>>,
pub extensions: Option<std::collections::BTreeMap<String, serde_json::Value>>,
pub feature_groups: Option<Vec<BmmFeatureGroup>>,
pub features: Option<Vec<BmmFeature>>,
pub ancestors: Option<std::collections::BTreeMap<String, BmmModelType>>,
pub package: BmmPackage,
pub properties: Option<std::collections::BTreeMap<String, BmmProperty>>,
pub source_schema_id: String,
pub immediate_descendants: Option<Vec<BmmClass>>,
pub is_override: bool,
pub static_properties: Option<std::collections::BTreeMap<String, BmmStatic>>,
pub functions: Option<std::collections::BTreeMap<String, BmmFunction>>,
pub procedures: Option<std::collections::BTreeMap<String, BmmProcedure>>,
pub is_primitive: Option<bool>,
pub is_abstract: Option<bool>,
pub invariants: Option<Vec<BmmAssertion>>,
pub creators: Option<std::collections::BTreeMap<String, BmmProcedure>>,
pub converters: Option<std::collections::BTreeMap<String, BmmProcedure>>,
pub item_names: Option<Vec<String>>,
pub item_values: Option<Vec<BmmPrimitiveValue>>,
}
#[doc(alias = "BMM_ENUMERATION")]
#[derive(Debug, Clone, PartialEq)]
pub enum BmmEnumeration {
BmmEnumerationInteger(BmmEnumerationInteger),
BmmEnumerationString(BmmEnumerationString),
BmmEnumeration(BmmEnumerationData),
}