pub fn raise(self) {
        for event in self.0 {
            match event {
                QueuedEvent::Simple { element, event_id } => {
                    unsafe { UiaRaiseAutomationEvent(&element, event_id) }.unwrap();
                }
                QueuedEvent::PropertyChanged {
                    element,
                    property_id,
                    old_value,
                    new_value,
                } => {
                    unsafe {
                        UiaRaiseAutomationPropertyChangedEvent(
                            &element,
                            property_id,
                            &old_value,
                            &new_value,
                        )
                    }
                    .unwrap();
                }
            }
        }
    }
Raise all queued events synchronously.

The window may receive `WM_GETOBJECT` messages during this call.
This means that any locks required by the `WM_GETOBJECT` handler
must not be held when this method is called.

This method should be called on the thread that owns the window.
It's not clear whether this is a strict requirement of UIA itself,
but based on the known behavior of UIA, MSAA, and some ATs,
it's strongly recommended.
platforms/windows/src/adapter.rs