[ResourceConsumption(ResourceScope.Machine)] //For Create method call. But the paths are not created in this method.
        internal static MetadataArtifactLoader CreateCompositeFromFilePaths(IEnumerable <string> filePaths, string validExtension, MetadataArtifactAssemblyResolver resolver)
        {
            ExtensionCheck extensionCheck;

            if (string.IsNullOrEmpty(validExtension))
            {
                extensionCheck = ExtensionCheck.All;
            }
            else
            {
                extensionCheck = ExtensionCheck.Specific;
            }

            List <MetadataArtifactLoader> loaders = new List <MetadataArtifactLoader>();

            // The following set is used to remove duplicate paths from the incoming array
            HashSet <string> uriRegistry = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            foreach (string path in filePaths)
            {
                if (string.IsNullOrEmpty(path))
                {
                    throw EntityUtil.Metadata(System.Data.Entity.Strings.NotValidInputPath,
                                              EntityUtil.CollectionParameterElementIsNullOrEmpty("filePaths"));
                }

                string trimedPath = path.Trim();
                if (trimedPath.Length > 0)
                {
                    loaders.Add(MetadataArtifactLoader.Create(
                                    trimedPath,
                                    extensionCheck,
                                    validExtension,
                                    uriRegistry,
                                    resolver)
                                );
                }
            }

            return(MetadataArtifactLoader.Create(loaders));
        }