src/vs/editor/standalone/browser/standaloneServices.ts/DynamicStandaloneServices/constructor
class DynamicStandaloneServices:	constructor(domElement: HTMLElement, overrides: IEditorOverrideServices) {
		super();

		const [_serviceCollection, _instantiationService] = StaticServices.init(overrides);
		this._serviceCollection = _serviceCollection;
		this._instantiationService = _instantiationService;

		const configurationService = this.get(IConfigurationService);
		const notificationService = this.get(INotificationService);
		const telemetryService = this.get(ITelemetryService);
		const themeService = this.get(IThemeService);
		const logService = this.get(ILogService);
		const contextKeyService = this.get(IContextKeyService);

		let ensure = <T>(serviceId: ServiceIdentifier<T>, factory: () => T): T => {
			let value: T | null = null;
			if (overrides) {
				value = overrides[serviceId.toString()];
			}
			if (!value) {
				value = factory();
			}
			this._serviceCollection.set(serviceId, value);
			return value;
		};

		ensure(IAccessibilityService, () => new AccessibilityService(contextKeyService, configurationService));

		ensure(IListService, () => new ListService(themeService));

		let commandService = ensure(ICommandService, () => new StandaloneCommandService(this._instantiationService));

		let keybindingService = ensure(IKeybindingService, () => this._register(new StandaloneKeybindingService(contextKeyService, commandService, telemetryService, notificationService, logService, domElement)));

		let layoutService = ensure(ILayoutService, () => new SimpleLayoutService(StaticServices.codeEditorService.get(ICodeEditorService), domElement));

		ensure(IQuickInputService, () => new StandaloneQuickInputServiceImpl(_instantiationService, StaticServices.codeEditorService.get(ICodeEditorService)));

		let contextViewService = ensure(IContextViewService, () => this._register(new ContextViewService(layoutService)));

		ensure(IClipboardService, () => new BrowserClipboardService());

		ensure(IContextMenuService, () => {
			const contextMenuService = new ContextMenuService(telemetryService, notificationService, contextViewService, keybindingService, themeService);
			contextMenuService.configure({ blockMouse: false }); // we do not want that in the standalone editor

			return this._register(contextMenuService);
		});

		ensure(IMenuService, () => new MenuService(commandService));

		ensure(IBulkEditService, () => new SimpleBulkEditService(StaticServices.modelService.get(IModelService)));
	}