/// <summary>
        /// Displays a non-blocking modal dialog with up to 3 options.
        /// </summary>
        /// <param name="title">Title of the dialog.</param>
        /// <param name="message">Message to display in the dialog.</param>
        /// <param name="defaultOption">Option selected if interactivity is disabled.</param>
        /// <param name="option0">Text for the first option.</param>
        /// <param name="option1">Text for the second option or null to disable.</param>
        /// <param name="option2">Text for the third option or null to disable.</param>
        /// <param name="windowWidth">Width of the dialog window.</param>
        /// <param name="windowCloseOption">Option selected if the dialog is closed.</param>
        /// <param name="complete">Callback to trigger once a selection is made.</param>
        /// <param name="renderContent">Callback to render additional content after dialog message.
        /// </param>
        /// <param name="renderButtons">Callback to render additional content before option buttons in
        /// the same row.</param>
        /// <param name="init">Callback for additional initialization after the dialog is created and
        /// before it is displayed.</param>
        internal static void DisplayDefault(string title, string message, Option defaultOption,
                                            string option0, string option1, string option2, float windowWidth,
                                            Option windowCloseOption, Action <Option> complete,
                                            Action <DialogWindow> renderContent, Action <DialogWindow> renderButtons,
                                            Action <DialogWindow> init)
        {
            if (ExecutionEnvironment.InteractiveMode)
            {
                var context = new DialogContext()
                {
                    Title               = title,
                    Message             = message,
                    DefaultOption       = defaultOption,
                    Option0String       = option0,
                    Option1String       = option1,
                    Option2String       = option2,
                    WindowWidth         = windowWidth,
                    WindowCloseOption   = windowCloseOption,
                    CompleteAction      = complete,
                    RenderContentAction = renderContent,
                    RenderButtonsAction = renderButtons,
                    InitAction          = init,
                };

                dialogJobQueue.Schedule(() => {
                    var window = (DialogWindow)EditorWindow.GetWindow(
                        typeof(DialogWindow), true, context.Title, true);
                    window.dialogContext = context;

                    if (context.InitAction != null)
                    {
                        context.InitAction(window);
                    }

                    window.Show();
                });
            }
            else
            {
                if (complete != null)
                {
                    complete(defaultOption);
                }
            }
        }