use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct Name {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub family: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub given: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dropping_particle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub non_dropping_particle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub suffix: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub literal: Option<String>,
#[serde(flatten)]
pub extra: BTreeMap<String, String>,
}