src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts/NotebookProviderInfoStore/_registerContributionPoint
class NotebookProviderInfoStore:	private _registerContributionPoint(notebookProviderInfo: NotebookProviderInfo): IDisposable {

		const disposables = new DisposableStore();

		for (const selector of notebookProviderInfo.selectors) {
			const globPattern = (selector as INotebookExclusiveDocumentFilter).include || selector as glob.IRelativePattern | string;
			const notebookEditorInfo: RegisteredEditorInfo = {
				id: notebookProviderInfo.id,
				label: notebookProviderInfo.displayName,
				detail: notebookProviderInfo.providerDisplayName,
				priority: notebookProviderInfo.exclusive ? RegisteredEditorPriority.exclusive : notebookProviderInfo.priority,
			};
			const notebookEditorOptions = {
				canHandleDiff: () => !!this._configurationService.getValue(NotebookTextDiffEditorPreview) && !this._accessibilityService.isScreenReaderOptimized(),
				canSupportResource: (resource: URI) => resource.scheme === Schemas.untitled || resource.scheme === Schemas.vscodeNotebookCell || this._fileService.canHandleResource(resource)
			};
			const notebookEditorInputFactory: EditorInputFactoryFunction = ({ resource, options }, group) => {
				const data = CellUri.parse(resource);
				let notebookUri: URI = resource;
				let cellOptions: IResourceEditorInput | undefined;

				if (data) {
					notebookUri = data.notebook;
					cellOptions = { resource, options };
				}

				const notebookOptions: INotebookEditorOptions = { ...options, cellOptions };
				return { editor: NotebookEditorInput.create(this._instantiationService, notebookUri, notebookProviderInfo.id), options: notebookOptions };
			};
			const notebookEditorDiffFactory: DiffEditorInputFactoryFunction = diffEditorInput => {
				const modifiedInput = diffEditorInput.modifiedInput;
				const originalInput = diffEditorInput.originalInput;
				return { editor: NotebookDiffEditorInput.create(this._instantiationService, modifiedInput.resource!, undefined, undefined, originalInput.resource!, notebookProviderInfo.id) };
			};
			// Register the notebook editor
			disposables.add(this._editorOverrideService.registerEditor(
				globPattern,
				notebookEditorInfo,
				notebookEditorOptions,
				notebookEditorInputFactory,
				({ resource, options }, group) => {
					if (!resource) {
						resource = URI.from({
							scheme: Schemas.untitled,
							authority: `Untitled-${this._untitledCounter++}`
						});
					}
					return notebookEditorInputFactory({ resource, options }, group);
				},
				notebookEditorDiffFactory
			));
			// Then register the schema handler as exclusive for that notebook
			disposables.add(this._editorOverrideService.registerEditor(
				`${Schemas.vscodeNotebookCell}:/**/${globPattern}`,
				{ ...notebookEditorInfo, priority: RegisteredEditorPriority.exclusive },
				notebookEditorOptions,
				notebookEditorInputFactory,
				undefined,
				notebookEditorDiffFactory
			));
		}

		return disposables;
	}