src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts/CustomEditorInputSerializer/deserialize
class CustomEditorInputSerializer:	public override deserialize(
		_instantiationService: IInstantiationService,
		serializedEditorInput: string
	): CustomEditorInput {
		const data = this.fromJson(JSON.parse(serializedEditorInput));
		if (data.viewType === 'jupyter.notebook.ipynb') {
			const editorAssociation = this._editorResolverService.getAssociationsForResource(data.editorResource);
			if (!editorAssociation.find(association => association.viewType === 'jupyter.notebook.ipynb')) {
				return NotebookEditorInput.create(this._instantiationService, data.editorResource, 'jupyter-notebook', { _backupId: data.backupId, startDirty: data.dirty }) as any;
			}
		}

		const webview = reviveWebview(this._webviewService, data);
		const customInput = this._instantiationService.createInstance(CustomEditorInput, data.editorResource, data.viewType, data.id, webview, { startsDirty: data.dirty, backupId: data.backupId });
		if (typeof data.group === 'number') {
			customInput.updateGroup(data.group);
		}
		return customInput;
	}