private PrepareNextVideoCacheDownloadingResult(VideoId videoId, VideoCacheItem videoCacheItem, IVideoCacheDownloadOperation downloadOperation, Func <IVideoCacheDownloadOperation, Task> downloadTaskFactory)
 {
     VideoId              = videoId;
     VideoCacheItem       = videoCacheItem;
     _downloadOperation   = downloadOperation;
     _downloadTaskFactory = downloadTaskFactory;
     FailedReason         = VideoCacheDownloadOperationFailedReason.None;
 }
 internal VideoCacheDownloadOperationCreationResult(IVideoCacheDownloadOperation op)
 {
     IsSuccess         = true;
     DownloadOperation = op;
     FailedReason      = VideoCacheDownloadOperationFailedReason.None;
 }
 internal static PrepareNextVideoCacheDownloadingResult Success(VideoId videoId, VideoCacheItem videoCacheItem, IVideoCacheDownloadOperation downloadOperation, Func <IVideoCacheDownloadOperation, Task> downloadTaskFactory)
 {
     return(new PrepareNextVideoCacheDownloadingResult(videoId, videoCacheItem, downloadOperation, downloadTaskFactory));
 }