public static void SetSkipMoving(SkippableMoveComponent[] skipMoving, RequestJobBase moveRequest, Task.TaskErrorLoggingDelegate writeError, bool computeCalculatedDefaultsFromVersions = true)
        {
            moveRequest.SkipFolderACLs  = false;
            moveRequest.SkipFolderRules = false;
            moveRequest.SkipFolderPromotedProperties = false;
            moveRequest.SkipFolderViews         = false;
            moveRequest.SkipFolderRestrictions  = false;
            moveRequest.SkipContentVerification = false;
            moveRequest.BlockFinalization       = false;
            moveRequest.FailOnFirstBadItem      = false;
            moveRequest.SkipKnownCorruptions    = false;
            moveRequest.FailOnCorruptSyncState  = false;
            if (computeCalculatedDefaultsFromVersions)
            {
                RequestTaskHelper.SetCalculatedSkipMovingDefaults(moveRequest);
            }
            if (skipMoving == null)
            {
                return;
            }
            int i = 0;

            while (i < skipMoving.Length)
            {
                SkippableMoveComponent skippableMoveComponent = skipMoving[i];
                switch (skippableMoveComponent)
                {
                case SkippableMoveComponent.FolderRules:
                    moveRequest.SkipFolderRules = true;
                    break;

                case SkippableMoveComponent.FolderACLs:
                    moveRequest.SkipFolderACLs = true;
                    break;

                case SkippableMoveComponent.FolderPromotedProperties:
                    moveRequest.SkipFolderPromotedProperties = true;
                    break;

                case SkippableMoveComponent.FolderViews:
                    moveRequest.SkipFolderViews = true;
                    break;

                case SkippableMoveComponent.FolderRestrictions:
                    moveRequest.SkipFolderRestrictions = true;
                    break;

                case SkippableMoveComponent.ContentVerification:
                    moveRequest.SkipContentVerification = true;
                    break;

                case SkippableMoveComponent.BlockFinalization:
                    moveRequest.BlockFinalization = true;
                    break;

                case SkippableMoveComponent.FailOnFirstBadItem:
                    moveRequest.FailOnFirstBadItem = true;
                    break;

                case (SkippableMoveComponent)8:
                case (SkippableMoveComponent)9:
                case (SkippableMoveComponent)10:
                case (SkippableMoveComponent)11:
                case (SkippableMoveComponent)13:
                    goto IL_100;

                case SkippableMoveComponent.KnownCorruptions:
                    moveRequest.SkipKnownCorruptions = true;
                    break;

                case SkippableMoveComponent.FailOnCorruptSyncState:
                    moveRequest.FailOnCorruptSyncState = true;
                    break;

                default:
                    goto IL_100;
                }
IL_11D:
                i++;
                continue;
IL_100:
                writeError(new ArgumentException(string.Format("Unknown value in SkipMoving parameter: {0}", skippableMoveComponent)), ErrorCategory.InvalidArgument, skipMoving);
                goto IL_11D;
            }
        }