public void StartNativeDrag(CoreDragInfo info)
        => CoreDispatcher.Main.RunAsync(CoreDispatcherPriority.High, async() =>
        {
            try
            {
                var sourceEvent = new NSEvent();
                var source      = new NSDraggingSource2();

                source.DraggingSessionEndedAction =
                    (NSImage image, CGPoint screenPoint, NSDragOperation operation) =>
                {
                    // The drop was completed externally
                    _manager.ProcessDropped(new DragEventSource(info.SourceId, _window));
                    return;
                };

                if (_window.ContentView != null)
                {
                    _window.ContentView.BeginDraggingSession(
                        await DataPackage.CreateNativeDragDropData(info.Data, info.GetPosition(null)),
                        sourceEvent,
                        source);
                }
                else
                {
                    this.Log().Error("Failed to start native Drag and Drop (Window.ContentView is null)");
                }
            }
            catch (Exception e)
            {
                this.Log().Error("Failed to start native Drag and Drop.", e);
            }
        });