private List<TraceMetadataProvider> fromMetaFiles(ClassLoader classLoader) {
        Set<String> loadedProviderIds = new HashSet<>();
        List<TraceMetadataProvider> traceMetadataProviders = new ArrayList<>();
        for (URL typeProviderUrl : getTypeProviderUrls(classLoader)) {
            ParsedTraceMetadataProvider parsedTraceMetadataProvider = traceMetadataProviderParser.parse(typeProviderUrl);
            String loadedProviderId = parsedTraceMetadataProvider.getId();
            if (loadedProviderIds.contains(loadedProviderId)) {
                logger.debug("Skipping trace metadata provider from {} as provider id [{}] has already been added.", typeProviderUrl, loadedProviderId);
            } else {
                loadedProviderIds.add(loadedProviderId);
                traceMetadataProviders.add(parsedTraceMetadataProvider);
            }
        }
        return traceMetadataProviders;
    }
@author HyunGil Jeong
@author Taejin Koo
agent-module/plugins-loader/src/main/java/com/navercorp/pinpoint/loader/plugins/trace/TraceMetadataProviderLoader.java