code: public Map<String, Class> mapAvailableImplementations(Class interfase) throws IOException {
          resourcesNotLoaded.clear();
          Map<String, Class> implementations = new HashMap<>();
          Map<String, String> map = mapAvailableStrings(interfase.getName());
          for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) {
              Map.Entry entry = (Map.Entry) iterator.next();
              String string = (String) entry.getKey();
              String className = (String) entry.getValue();
              try {
                  Class impl = classLoader.loadClass(className);
                  if (interfase.isAssignableFrom(impl)) {
                      implementations.put(string, impl);
                  } else {
                      resourcesNotLoaded.add(className);
                  }
              } catch (Exception notAvailable) {
                  resourcesNotLoaded.add(className);
              }
          }
          return implementations;
      }
docs: Assumes the class specified points to a directory in the classpath that holds files
  containing the name of a class that implements or is a subclass of the specfied class.
  <p/>
  Any class that cannot be loaded or are not assignable to the specified class will be
  skipped and placed in the 'resourcesNotLoaded' collection.
  <p/>
  Example classpath:
  <p/>
  META-INF/java.net.URLStreamHandler/jar
  META-INF/java.net.URLStreamHandler/file
  META-INF/java.net.URLStreamHandler/http
  <p/>
  ResourceFinder finder = new ResourceFinder("META-INF/");
  Map map = finder.mapAllImplementations(java.net.URLStreamHandler.class);
  Class jarUrlHandler = map.get("jar");
  Class fileUrlHandler = map.get("file");
  Class httpUrlHandler = map.get("http");
  
  @param interfase a superclass or interface
  @return
  @throws IOException if classLoader.getResources throws an exception