    /// Optional string destructor: called for strings returned by vtable callbacks.
    pub free_string: Option<unsafe extern "C" fn(*mut std::ffi::c_char)>,
    /// Optional destructor: called once with `user_data` when the bridge is dropped.
    pub free_user_data: Option<unsafe extern "C" fn(*mut std::ffi::c_void)>,
}

// SAFETY: all fields are function pointers and free_user_data, which are Send + Sync.
unsafe impl Send for {{ vtable_name }} {}
unsafe impl Sync for {{ vtable_name }} {}
