src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts/DelayedEmitter/emit
class DelayedEmitter:	emit(data: NotebookRawContentEvent, synchronous: boolean, endSelections?: ISelectionState) {
		if (this._deferredCnt === 0) {
			this._onDidChangeContent.fire(
				{
					rawEvents: [data],
					versionId: this._textModel.versionId,
					synchronous,
					endSelectionState: endSelections
				}
			);
		} else {
			if (!this._notebookTextModelChangedEvent) {
				this._notebookTextModelChangedEvent = {
					rawEvents: [data],
					versionId: this._textModel.versionId,
					endSelectionState: endSelections,
					synchronous: synchronous
				};
			} else {
				// merge
				this._notebookTextModelChangedEvent = {
					rawEvents: [...this._notebookTextModelChangedEvent.rawEvents, data],
					versionId: this._textModel.versionId,
					endSelectionState: endSelections !== undefined ? endSelections : this._notebookTextModelChangedEvent.endSelectionState,
					synchronous: synchronous
				};
			}
		}
	}