src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.ts/DiffEditorHelperContribution/constructor
class DiffEditorHelperContribution:	constructor(
		private readonly _diffEditor: IDiffEditor,
		@IInstantiationService private readonly _instantiationService: IInstantiationService,
		@IConfigurationService private readonly _configurationService: IConfigurationService,
		@INotificationService private readonly _notificationService: INotificationService,
	) {
		super();
		this._helperWidget = null;
		this._helperWidgetListener = null;
		this._state = WidgetState.Hidden;

		if (!(this._diffEditor instanceof EmbeddedDiffEditorWidget)) {
			this._register(this._diffEditor.onDidUpdateDiff(() => {
				const diffComputationResult = this._diffEditor.getDiffComputationResult();
				this._setState(this._deduceState(diffComputationResult));

				if (diffComputationResult && diffComputationResult.quitEarly) {
					this._notificationService.prompt(
						Severity.Warning,
						nls.localize('hintTimeout', "The diff algorithm was stopped early (after {0} ms.)", this._diffEditor.maxComputationTime),
						[{
							label: nls.localize('removeTimeout', "Remove Limit"),
							run: () => {
								this._configurationService.updateValue('diffEditor.maxComputationTime', 0);
							}
						}],
						{}
					);
				}
			}));
		}
	}