public ProjectSnapshotSynchronizationService(
            JoinableTaskFactory joinableTaskFactory,
            CollaborationSession sessionContext,
            IProjectSnapshotManagerProxy hostProjectManagerProxy,
            ProjectSnapshotManagerBase projectSnapshotManager)
        {
            if (joinableTaskFactory == null)
            {
                throw new ArgumentNullException(nameof(joinableTaskFactory));
            }

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

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

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

            _joinableTaskFactory     = joinableTaskFactory;
            _sessionContext          = sessionContext;
            _hostProjectManagerProxy = hostProjectManagerProxy;
            _projectSnapshotManager  = projectSnapshotManager;
        }
        public ProjectSnapshotSynchronizationService(
            JoinableTaskFactory joinableTaskFactory,
            LiveShareSessionAccessor liveShareSessionAccessor,
            IProjectSnapshotManagerProxy hostProjectManagerProxy,
            ProjectSnapshotManagerBase projectSnapshotManager)
        {
            if (joinableTaskFactory == null)
            {
                throw new ArgumentNullException(nameof(joinableTaskFactory));
            }

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

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

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

            _joinableTaskFactory      = joinableTaskFactory;
            _liveShareSessionAccessor = liveShareSessionAccessor;
            _hostProjectManagerProxy  = hostProjectManagerProxy;
            _projectSnapshotManager   = projectSnapshotManager;
        }