/// <summary>
        /// Saves the state of the workspace.
        /// </summary>
        /// <param name="workspaceState">State of the workspace.</param>
        public void SaveWorkspaceState(WorkspaceState workspaceState)
        {
            var workspaceStates = new List <WorkspaceState>();

            foreach (var workspace in this.Workspaces)
            {
                if (workspace.WorkspaceState == workspaceState)
                {
                    // Save the new change status.
                    workspaceState.HasChanges = false;

                    var targetFileName  = workspace.WorkspaceState.TempStorageFilename;
                    var targetDirectory = Path.GetDirectoryName(targetFileName);

                    if (targetDirectory == null)
                    {
                        throw new ArgumentNullException(nameof(targetDirectory));
                    }

                    if (!Directory.Exists(targetDirectory))
                    {
                        Directory.CreateDirectory(targetDirectory);
                    }

                    File.WriteAllText(targetFileName, workspace.Content);
                }

                workspaceStates.Add(workspace.WorkspaceState);
            }

            JsonUtils.SerializeJsonFile(this.WorkspaceStatesFileLocation, workspaceStates);

            workspaceState.ResetChangeState();
        }