public async Task <ExecutionResult> ResetAsync(bool initialize = true)
        {
            try {
                string lastWorkingDirectory = null;
                if (Session.IsHostRunning)
                {
                    // Remember directory in case it is user-initiated reset
                    // so we can restore it when host completes the restart.
                    lastWorkingDirectory = await Session.GetRWorkingDirectoryAsync();

                    await SaveStateAsync();

                    WriteErrorLine(Environment.NewLine + Resources.MicrosoftRHostStopping);
                    await Session.StopHostAsync(true);
                }

                if (!initialize)
                {
                    return(ExecutionResult.Success);
                }

                WriteErrorLine(Environment.NewLine + Resources.MicrosoftRHostStarting);
                return(await InitializeAsync(isResetting : true, workingDirectory : lastWorkingDirectory));
            } catch (Exception ex) {
                Trace.Fail($"Exception in RInteractiveEvaluator.ResetAsync\n{ex}");
                return(ExecutionResult.Failure);
            }
        }