src/vs/workbench/contrib/notebook/browser/diff/notebookTextDiffEditor.ts/NotebookTextDiffEditor/computeModifiedLCS
class NotebookTextDiffEditor:	static computeModifiedLCS(instantiationService: IInstantiationService, change: IDiffChange, originalModel: NotebookTextModel, modifiedModel: NotebookTextModel, eventDispatcher: NotebookDiffEditorEventDispatcher, initData: {
		metadataStatusHeight: number;
		outputStatusHeight: number;
	}) {
		const result: DiffElementViewModelBase[] = [];
		// modified cells
		const modifiedLen = Math.min(change.originalLength, change.modifiedLength);

		for (let j = 0; j < modifiedLen; j++) {
			const isTheSame = originalModel.cells[change.originalStart + j].equal(modifiedModel.cells[change.modifiedStart + j]);
			result.push(new SideBySideDiffElementViewModel(
				modifiedModel,
				originalModel,
				instantiationService.createInstance(DiffNestedCellViewModel, originalModel.cells[change.originalStart + j]),
				instantiationService.createInstance(DiffNestedCellViewModel, modifiedModel.cells[change.modifiedStart + j]),
				isTheSame ? 'unchanged' : 'modified',
				eventDispatcher,
				initData
			));
		}

		for (let j = modifiedLen; j < change.originalLength; j++) {
			// deletion
			result.push(new SingleSideDiffElementViewModel(
				originalModel,
				modifiedModel,
				instantiationService.createInstance(DiffNestedCellViewModel, originalModel.cells[change.originalStart + j]),
				undefined,
				'delete',
				eventDispatcher,
				initData
			));
		}

		for (let j = modifiedLen; j < change.modifiedLength; j++) {
			// insertion
			result.push(new SingleSideDiffElementViewModel(
				modifiedModel,
				originalModel,
				undefined,
				instantiationService.createInstance(DiffNestedCellViewModel, modifiedModel.cells[change.modifiedStart + j]),
				'insert',
				eventDispatcher,
				initData
			));
		}

		return result;
	}