internal static MetadataArtifactLoader Create(
            string path,
            MetadataArtifactLoader.ExtensionCheck extensionCheck,
            string validExtension,
            ICollection <string> uriRegistry,
            MetadataArtifactAssemblyResolver resolver)
        {
            if (MetadataArtifactLoader.PathStartsWithResPrefix(path))
            {
                return(MetadataArtifactLoaderCompositeResource.CreateResourceLoader(path, extensionCheck, validExtension, uriRegistry, resolver));
            }
            string str = MetadataArtifactLoader.NormalizeFilePaths(path);

            if (Directory.Exists(str))
            {
                return((MetadataArtifactLoader) new MetadataArtifactLoaderCompositeFile(str, uriRegistry));
            }
            if (!File.Exists(str))
            {
                throw new MetadataException(Strings.InvalidMetadataPath);
            }
            switch (extensionCheck)
            {
            case MetadataArtifactLoader.ExtensionCheck.Specific:
                MetadataArtifactLoader.CheckArtifactExtension(str, validExtension);
                break;

            case MetadataArtifactLoader.ExtensionCheck.All:
                if (!MetadataArtifactLoader.IsValidArtifact(str))
                {
                    throw new MetadataException(Strings.InvalidMetadataPath);
                }
                break;
            }
            return((MetadataArtifactLoader) new MetadataArtifactLoaderFile(str, uriRegistry));
        }