private async Task ApplyProjectChangesUnderLockAsync(IProjectVersionedValue <IProjectSubscriptionUpdate> update, bool evaluation, CancellationToken cancellationToken)
            {
                IWorkspaceProjectContext context = _contextAccessor !.Context;

                context.StartBatch();

                try
                {
                    bool isActiveContext = _activeWorkspaceProjectContextTracker.IsActiveEditorContext(_contextAccessor.ContextId);

                    if (evaluation)
                    {
                        await _applyChangesToWorkspaceContext !.Value.ApplyProjectEvaluationAsync(update, isActiveContext, cancellationToken);
                    }
                    else
                    {
                        await _applyChangesToWorkspaceContext !.Value.ApplyProjectBuildAsync(update, isActiveContext, cancellationToken);
                    }
                }
                finally
                {
                    context.EndBatch();

                    NotifyOutputDataCalculated(update.DataSourceVersions, evaluation);
                }

                await _applyChangesToWorkspaceContext.Value.ApplyProjectEndBatchAsync(update, cancellationToken);
            }