src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.ts/KernelPickerMRUStrategy/displaySelectAnotherQuickPick
class KernelPickerMRUStrategy:	private async displaySelectAnotherQuickPick(editor: IActiveNotebookEditor) {
		const notebook: NotebookTextModel = editor.textModel;
		const disposables = new DisposableStore();
		return new Promise<boolean>(resolve => {
			// select from kernel sources
			const quickPick = this._quickInputService.createQuickPick<KernelQuickPickItem>();
			quickPick.title = localize('selectAnotherKernel', "Select Another Kernel");
			quickPick.busy = true;
			quickPick.buttons = [this._quickInputService.backButton];
			quickPick.show();

			disposables.add(quickPick.onDidTriggerButton(button => {
				if (button === this._quickInputService.backButton) {
					quickPick.hide();
					resolve(this.showQuickPick(editor));
				}
			}));
			disposables.add(quickPick.onDidAccept(async () => {
				quickPick.hide();
				quickPick.dispose();
				if (quickPick.selectedItems) {
					if (isKernelSourceQuickPickItem(quickPick.selectedItems[0])) {
						const selectedKernelId = await this._executeCommand<string>(notebook, quickPick.selectedItems[0].command);
						if (selectedKernelId) {
							const { all } = await this._getMatchingResult(notebook);
							const kernel = all.find(kernel => kernel.id === `ms-toolsai.jupyter/${selectedKernelId}`);
							if (kernel) {
								await this._selecteKernel(notebook, kernel);
								resolve(true);
							}
							resolve(true);
						} else {
							return resolve(this.displaySelectAnotherQuickPick(editor));
						}
					} else if (isKernelPick(quickPick.selectedItems[0])) {
						await this._selecteKernel(notebook, quickPick.selectedItems[0].kernel);
						resolve(true);
					} else if (isGroupedKernelsPick(quickPick.selectedItems[0])) {
						await this._selectOneKernel(notebook, quickPick.selectedItems[0].source, quickPick.selectedItems[0].kernels);
						resolve(true);
					} else if (isSourcePick(quickPick.selectedItems[0])) {
						// selected explicilty, it should trigger the execution?
						quickPick.selectedItems[0].action.runAction();
						resolve(true);
					}
				}
			}));

			disposables.add(quickPick.onDidHide(() => {
				quickPick.dispose();
				resolve(false);
			}));
			this._calculdateKernelSources(editor).then(quickPickItems => {
				quickPick.items = quickPickItems;
				if (quickPick.items.length > 0) {
					quickPick.busy = false;
				}
			});

			disposables.add(Event.debounce<void, void>(
				Event.any(
					this._notebookKernelService.onDidChangeSourceActions,
					this._notebookKernelService.onDidAddKernel,
					this._notebookKernelService.onDidRemoveKernel
				),
				(last, _current) => last,
				KERNEL_PICKER_UPDATE_DEBOUNCE
			)(async () => {
				quickPick.busy = true;
				const quickPickItems = await this._calculdateKernelSources(editor);
				quickPick.items = quickPickItems;
				quickPick.busy = false;
			}));
		}).finally(() => {
			disposables.dispose();
		});
	}