/// <summary>
        /// Initialises the task statuses.
        /// </summary>
        /// <param name="newStatus">The new status.</param>
        /// <param name="tasks">The tasks.</param>
        /// <param name="taskStatuses">The task statuses.</param>
        /// <param name="title">The title.</param>
        /// <returns></returns>
        private ItemStatus InitialiseTaskStatuses(
            ItemBuildStatus newStatus,
            ITask[] tasks,
            Dictionary <ITask, ItemStatus> taskStatuses,
            string title)
        {
            var groupStatus = new ItemStatus
            {
                Name                      = title,
                Status                    = newStatus,
                TimeCompleted             = null,
                TimeOfEstimatedCompletion = null,
                TimeStarted               = null
            };

            this.CurrentStatus.AddChild(groupStatus);
            if (tasks != null)
            {
                foreach (var task in tasks)
                {
                    ItemStatus taskItem;
                    var        tbase = task as TaskBase;
                    if (tbase != null)
                    {
                        // Reset the status for the task
                        tbase.InitialiseStatus(newStatus);
                    }

                    var dummy = task as IStatusSnapshotGenerator;
                    if (dummy != null)
                    {
                        taskItem = dummy.GenerateSnapshot();
                    }
                    else
                    {
                        taskItem = new ItemStatus(task.GetType().Name)
                        {
                            Status = newStatus
                        };
                    }

                    // Only add the item if it has been initialised
                    if (taskItem != null)
                    {
                        groupStatus.AddChild(taskItem);
                        taskStatuses.Add(task, taskItem);
                    }
                }
            }

            return(groupStatus);
        }