public WindowPane(Control deployControl)
     :base(null)
 {
     content = deployControl;
 }
        private async Task<IVsWindowFrame> CreateDocWindowAsync(UnconfiguredProject unconfiguredProject, string documentName, IVsHierarchy hierarchy, uint itemId)
        {
            var windowFlags = _VSRDTFLAGS.RDT_DontAddToMRU | _VSRDTFLAGS.RDT_DontAutoOpen;
            var model = new WindowModel(project, targetUIs, lockService, threadHandler);
            await model.LoadFromProject();
            var control = new Control(model);
            var windowPane = new WindowPane(control);
            var editorType = Guid.Empty;
            var commandUI = Guid.Empty;
            var caption = $"{model.Name} Deploy Rules";
            IVsWindowFrame frame;
            var docView = IntPtr.Zero;
            var docData = IntPtr.Zero;
            var hr = 0;

            try
            {
                docView = Marshal.GetIUnknownForObject(windowPane);
                docData = Marshal.GetIUnknownForObject(model);
                hr = uiShell.CreateDocumentWindow((uint)windowFlags, documentName, (IVsUIHierarchy)hierarchy, itemId,
                    docView, docData, ref editorType, null, ref commandUI, null, caption, string.Empty, null, out frame);
            }
            finally
            {
                if (docView != IntPtr.Zero)
                {
                    Marshal.Release(docView);
                }
                if (docData != IntPtr.Zero)
                {
                    Marshal.Release(docData);
                }
            }
            ErrorHandler.ThrowOnFailure(hr);
            return frame;
        }