/// <summary>
            /// Gets a collection of packages available from executable references after having
            /// filtered them by the excluded namespaces.
            /// </summary>
            /// <param name="exclusions">A collection of namespaces excluded from the analysis.</param>
            public IEnumerable <PortableExecutableWrapper> GetExecutables(NamespaceExclusionList exclusions)
            {
                var wrappers = new List <PortableExecutableWrapper>();

                foreach (var reference in _context.GetExecutableReferences())
                {
                    var path = reference.FilePath;

                    if (path is null)
                    {
                        _logger.LogError($"Failed to load referenced assembly: {reference.Display ?? "<unknown>"}");

                        continue;
                    }

                    var assembly = _context.Load(path);
                    var ns       = GetNamespace(assembly);

                    if (ns is null)
                    {
                        _logger.LogVerbose($"Skipping referenced assembly: {reference.Display ?? "<unknown>"}. It has not exported types.");

                        continue;
                    }

                    if (exclusions.IsExcluded(ns))
                    {
                        _logger.LogVerbose($"Skipping referenced assembly: {reference.Display ?? "<unknown>"}. The exported types are excluded.");

                        continue;
                    }

                    wrappers.Add(new PortableExecutableWrapper(reference, assembly));
                }

                return(wrappers);
            }
        public IEnumerable <PortableExecutableWrapper> GetExecutables(NamespaceExclusionList exclusions)
        {
            var resolver = new PortableExecutableResolver(this, _logger);

            return(resolver.GetExecutables(exclusions));
        }