private List<URL> getTypeProviderUrls(ClassLoader classLoader) {
        List<URL> typeProviderUrls = new ArrayList<>(customTypeProviderUrls);

        for (URL customTypeProviderUrl : customTypeProviderUrls) {
            if (pluginTypeProviderUrlFilter.filter(customTypeProviderUrl)) {
                continue;
            }
            typeProviderUrls.add(customTypeProviderUrl);
        }

        try {
            Enumeration<URL> pluginTypeProviderUrls = classLoader.getResources(typeProviderDefEntry);
            while (pluginTypeProviderUrls.hasMoreElements()) {
                URL pluginTypeProviderUrl = pluginTypeProviderUrls.nextElement();
                if (pluginTypeProviderUrlFilter.filter(pluginTypeProviderUrl)) {
                    continue;
                }

                typeProviderUrls.add(pluginTypeProviderUrl);
            }
        } catch (IOException e) {
            throw new IllegalStateException("I/O error getting type provider definitions", e);
        }
        return typeProviderUrls;
    }
@author HyunGil Jeong
@author Taejin Koo
agent-module/plugins-loader/src/main/java/com/navercorp/pinpoint/loader/plugins/trace/TraceMetadataProviderLoader.java