public async Task <GetResponse <ReflectionSettingsBundleVm> > ExtractBundle(
            string projPath,
            ReflectionSettingsConfig[] targets,
            IObservable <IChangeSet <IModListingGetter> > detectedLoadOrder,
            IObservable <ILinkCache?> linkCache,
            CancellationToken cancel)
        {
            var vms = await _Extract.Extract <ReflectionSettingsVM[]>(
                projPath : projPath,
                cancel : cancel,
                getter : (assemb) =>
            {
                return(targets
                       .Select((s, index) =>
                {
                    try
                    {
                        var t = assemb.GetType(s.TypeName);
                        if (t == null)
                        {
                            return null;
                        }
                        return _reflFactory(
                            ReflectionSettingsParameters.FromType(
                                detectedLoadOrder.ObserveOn(RxApp.MainThreadScheduler),
                                linkCache,
                                t,
                                Activator.CreateInstance(t)),
                            nickname: targets[index].Nickname,
                            settingsSubPath: targets[index].Path);
                    }
                    catch (Exception ex)
                    {
                        _Logger.Error(ex, "Error creating reflected settings");
                        throw new ArgumentException($"Error creating reflected settings: {ex.Message}");
                    }
                })
                       .NotNull()
                       .ToArray());
            }).ConfigureAwait(false);

            if (vms.Failed)
            {
                return(vms.BubbleFailure <ReflectionSettingsBundleVm>());
            }
            await Task.WhenAll(vms.Value.Item.Select(vm => vm.Import(cancel))).ConfigureAwait(false);

            return(new ReflectionSettingsBundleVm(vms.Value.Item, vms.Value.Temp, _Logger));
        }