async showQuickPick<T extends QuickPickItem, P extends QuickPickParameters<T>>(
        { title, step, totalSteps, items, activeItem, placeholder, buttons, shouldResume }: P
    ): Promise<T | (P extends { buttons: (infer I)[]; } ? I : never)> {
        const disposable: Disposable[] = [];