code: public static Collection<URL> forManifest(final URL url) {
          final Collection<URL> result = new ArrayList<URL>();
          result.add(url);
          try {
              final String part = cleanPath(url);
              File jarFile = new File(part);
              JarFile myJar = new JarFile(part);
              URL validUrl = tryToGetValidUrl(jarFile.getPath(), new File(part).getParent(), part);
              if (validUrl != null) { result.add(validUrl); }
              final Manifest manifest = myJar.getManifest();
              if (manifest != null) {
                  final String classPath = manifest.getMainAttributes().getValue(new Attributes.Name("Class-Path"));
                  if (classPath != null) {
                      for (String jar : classPath.split(" ")) {
                          validUrl = tryToGetValidUrl(jarFile.getPath(), new File(part).getParent(), jar);
                          if (validUrl != null) { result.add(validUrl); }
                      }
                  }
              }
          } catch (IOException e) {
              // don't do anything, we're going on the assumption it is a jar, which could be wrong
          }
          return distinctUrls(result);
      }
docs: Returns a distinct collection of URLs from a single URL based on the Manifest information.
  <p>
  The {@code MANIFEST.MF} file can contain a {@code Class-Path} entry that defines additional
  jar files to be included on the classpath. This method takes a single URL, tries to
  resolve it as a jar file, and if so, adds any additional manifest classpaths.
  The returned collection of URLs will always contain the input URL.
  
  @return the collection of URLs, not null