code: public static Collection<URL> forResource(String resourceName, ClassLoader... classLoaders) {
          final List<URL> result = new ArrayList<>();
          final ClassLoader[] loaders = classLoaders(classLoaders);
          for (ClassLoader classLoader : loaders) {
              try {
                  final Enumeration<URL> urls = classLoader.getResources(resourceName);
                  while (urls.hasMoreElements()) {
                      final URL url = urls.nextElement();
                      int index = url.toExternalForm().lastIndexOf(resourceName);
                      if (index != -1) {
                          String newUrlString = url.toExternalForm().substring(0, index);
                          // Use old url as context to support exotic url handlers
                          result.add(new URL(url, newUrlString));
                      } else {
                          result.add(url);
                      }
                  }
              } catch (IOException e) {
                  if (Reflections.log != null) {
                      Reflections.log.error("error getting resources for " + resourceName, e);
                  }
              }
          }
          return distinctUrls(result);
      }
docs: Returns a distinct collection of URLs based on a resource.
  <p>
  This searches for the resource name, using {@link ClassLoader#getResources(String)}.
  For example, {@code forResource(test.properties)} effectively returns URLs from the
  classpath containing files of that name.
  <p>
  If the optional {@link ClassLoader}s are not specified, then both {@link #contextClassLoader()}
  and {@link #staticClassLoader()} are used for {@link ClassLoader#getResources(String)}.
  <p>
  The returned URLs retains the order of the given {@code classLoaders}.
  
  @return the collection of URLs, not null