src/vs/workbench/contrib/audioCues/browser/audioCueDebuggerContribution.ts/AudioCueLineDebuggerContribution/constructor
class AudioCueLineDebuggerContribution:	constructor(
		@IDebugService debugService: IDebugService,
		@IAudioCueService private readonly audioCueService: IAudioCueService,
	) {
		super();

		this._register(autorunWithStore((reader, store) => {
			if (!audioCueService.isEnabled(AudioCue.onDebugBreak).read(reader)) {
				return;
			}

			const sessionDisposables = new Map<IDebugSession, IDisposable>();
			store.add(toDisposable(() => {
				sessionDisposables.forEach(d => d.dispose());
				sessionDisposables.clear();
			}));

			store.add(
				debugService.onDidNewSession((session) =>
					sessionDisposables.set(session, this.handleSession(session))
				)
			);

			store.add(debugService.onDidEndSession(session => {
				sessionDisposables.get(session)?.dispose();
				sessionDisposables.delete(session);
			}));

			debugService
				.getModel()
				.getSessions()
				.forEach((session) =>
					sessionDisposables.set(session, this.handleSession(session))
				);

		}, 'subscribe to debug sessions'));
	}