public void Dispose()
        {
            Done = null;

            m_ProjectBindDrawer.stateChangeButtonFired -= EndVisual;
            m_ProjectBindDrawer.Dispose();
            m_ProjectBindDrawer = null;

            m_ProjectBindContainer = null;
            m_ExceptionContainer   = null;
            m_ExceptionVisual.Dispose();
        }
        public void Init(VisualElement parentVisual, IEnumerable <IEditorGameService> services, VisualElement buttonsContainer)
        {
            m_ProjectBindDrawer = new ProjectBindDrawer();
            m_ProjectBindDrawer.stateChangeButtonFired += EndVisual;
            m_ProjectBindDrawer.exceptionCallback      += ShowExceptionVisual;

            var visualAsset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(ServiceActivationPopupVisual.UxmlPath.ProjectBind);

            if (visualAsset != null)
            {
                visualAsset.CloneTree(parentVisual);
            }

            SetupProjectBindVisual(parentVisual);
            SetupExceptionVisual(parentVisual, services, buttonsContainer);
        }