use serde_json::Value;
use crate::{util::ShouldSkip, Map};
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct ErrorCause {
pub caused_by: Option<Box<ErrorCause>>,
pub reason: Option<String>,
#[serde(default, skip_serializing_if = "ShouldSkip::should_skip")]
pub root_cause: Vec<ErrorCause>,
pub stack_trace: Option<String>,
#[serde(default, skip_serializing_if = "ShouldSkip::should_skip")]
pub suppressed: Vec<ErrorCause>,
#[serde(rename = "type")]
pub ty: Option<String>,
#[serde(default, skip_serializing_if = "ShouldSkip::should_skip", flatten)]
pub additional_details: Map<String, Value>,
}