private void IncludeAdditionalAssemblies(ICollection <Assembly> typeRelatedAssemblies)
        {
            foreach (string assemblyName in _constraints.IncludeAdditionalAssemblies)
            {
                var additionalAssembly = TypeCollector.TryLoadAssembly(assemblyName);
                if (additionalAssembly == null)
                {
                    continue;
                }

                if (!typeRelatedAssemblies.Contains(additionalAssembly))
                {
                    typeRelatedAssemblies.Add(additionalAssembly);
                }
            }
        }
        private SortedList <string, Type> GetFilteredTypes()
        {
            var typeRelatedAssemblies = TypeCollector.GetAssembliesTypeHasAccessTo(_declaringType);

            if (_constraints?.IncludeAdditionalAssemblies != null)
            {
                IncludeAdditionalAssemblies(typeRelatedAssemblies);
            }

            var filteredTypes = TypeCollector.GetFilteredTypesFromAssemblies(
                typeRelatedAssemblies,
                _constraints);

            var sortedTypes = new SortedList <string, Type>(filteredTypes.ToDictionary(type => type.FullName));

            return(sortedTypes);
        }