ZeroInstall.Services.Solvers.SelectionCandidateProvider.GetCandidates C# (CSharp) Method

GetCandidates() private method

private GetCandidates ( FeedUri feedUri, Feed feed, Requirements requirements ) : IEnumerable
feedUri FeedUri
feed Feed
requirements Requirements
return IEnumerable
        private IEnumerable<SelectionCandidate> GetCandidates(FeedUri feedUri, Feed feed, Requirements requirements)
        {
            var feedPreferences = FeedPreferences.LoadForSafe(feedUri);

            foreach (var element in feed.Elements)
            {
                var packageImplementation = element as PackageImplementation;
                if (packageImplementation != null)
                { // Each <package-implementation> provides 0..n selection candidates
                    var externalImplementations = _packageManager.Query(packageImplementation, requirements.Distributions.ToArray());
                    foreach (var externalImplementation in externalImplementations)
                    {
                        _externalImplementations[externalImplementation.ID] = externalImplementation;
                        yield return new SelectionCandidate(new FeedUri(FeedUri.FromDistributionPrefix + feedUri), feedPreferences, externalImplementation, requirements);
                    }
                }
                else if (requirements.Distributions.ContainsOrEmpty(Restriction.DistributionZeroInstall))
                {
                    var implementation = element as Implementation;
                    if (implementation != null)
                    { // Each <implementation> provides 1 selection candidate
                        yield return new SelectionCandidate(feedUri, feedPreferences, implementation, requirements,
                            offlineUncached: (_config.NetworkUse == NetworkLevel.Offline) && !_isCached(implementation));
                    }
                }
            }
        }