/// <summary>
        /// process a status-changed-event
        /// </summary>
        /// <param name="sce">status-changed-event</param>
        public void ProcessStatusChangedEventAsync(StatusChangedEvent sce)
        {
            SyncElementInfo sei    = sce.SyncElementInfo;
            bool            isFile = typeof(SyncFileInfo) == sei.GetType();

            switch (sce.CreateStatus)
            {
            case SyncElementStatus.ElementFound:
                UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                break;

            case SyncElementStatus.ChangeDetectingStarted:
                break;

            case SyncElementStatus.NoChangeFound:
                UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                break;

            case SyncElementStatus.ChangeFound:
                UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                break;

            case SyncElementStatus.ChangeApplied:
                UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                break;

            case SyncElementStatus.Conflicted:
                string elementType  = isFile ? "file" : "dir";
                string conflictType = "";
                switch (sei.ConflictInfo.Type)
                {
                case ConflictType.IO:
                    conflictType = "IO";
                    break;

                case ConflictType.UA:
                    conflictType = "Access Denied";
                    break;

                case ConflictType.DirNotEmpty:
                    conflictType = "Dir Not Empty";
                    break;

                case ConflictType.Unknown:
                    conflictType = "Unknown";
                    break;
                }

                Invoke(new Action(() =>
                                  AddLogLine($"Conflict ({conflictType}) at {elementType} in {sei.ConflictInfo.Context}: {sei.ConflictInfo.GetAbsolutePath()}")
                                  ));

                UpdateTreeNodeIfVisible(sei.ElementInfo, true);

                break;
            }
        }
        /// <summary>
        /// process a status-changed-event
        /// </summary>
        /// <param name="sce">status-changed-event</param>
        public void ProcessStatusChangedEventAsync(StatusChangedEvent sce)
        {
            SyncElementInfo sei = sce.SyncElementInfo;
            bool isFile = typeof(SyncFileInfo) == sei.GetType();

            switch (sce.CreateStatus)
            {
                case SyncElementStatus.ElementFound:
                    UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                    break;
                case SyncElementStatus.ChangeDetectingStarted:
                    break;
                case SyncElementStatus.NoChangeFound:
                    UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                    break;
                case SyncElementStatus.ChangeFound:
                    UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                    break;
                case SyncElementStatus.ChangeApplied:
                    UpdateTreeNodeIfVisible(sei.ElementInfo, true);
                    break;
                case SyncElementStatus.Conflicted:
                    string elementType = isFile ? "file" : "dir";
                    string conflictType = "";
                    switch (sei.ConflictInfo.Type)
                    {
                        case ConflictType.IO:
                            conflictType = "IO";
                            break;
                        case ConflictType.UA:
                            conflictType = "Access Denied";
                            break;
                        case ConflictType.DirNotEmpty:
                            conflictType = "Dir Not Empty";
                            break;
                        case ConflictType.Unknown:
                            conflictType = "Unknown";
                            break;
                    }

                    Invoke(new Action(() => 
                        AddLogLine($"Conflict ({conflictType}) at {elementType} in {sei.ConflictInfo.Context}: {sei.ConflictInfo.GetAbsolutePath()}")
                    ));

                    UpdateTreeNodeIfVisible(sei.ElementInfo, true);

                    break;
            }
        }