pub trait Element: Debug {
    // Required methods
    fn is_system(&self) -> bool;
    fn is_public(&self) -> bool;
    fn doc_comment(&self) -> Cow<'_, str>;
    fn cpp_namespace(&self) -> Cow<'_, str>;
    fn cpp_name(&self, style: CppNameStyle) -> Cow<'_, str>;
    // Provided methods
    fn update_debug_struct<'dref, 'a, 'b>(
        &self,
        struct_debug: &'dref mut DebugStruct<'a, 'b>,
    ) -> &'dref mut DebugStruct<'a, 'b> { ... }
    fn exclude_kind(&self) -> ExcludeKind { ... }
}