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;


		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);
						}
					}],
					{}
				);
			}
		}));
	}