code: private void loadClasses(Map infoMap, URL path) throws DiffException {
          try {
              File jarFile = null;
              if(!"file".equals(path.getProtocol()) || path.getHost() != null) {
                  // If it's not a local file, store it as a temporary jar file.
                  // java.util.jar.JarFile requires a local file handle.
                  jarFile = File.createTempFile("jardiff","jar");
                  // Mark it to be deleted on exit.
                  jarFile.deleteOnExit();
                  InputStream in = path.openStream();
                  OutputStream out = new FileOutputStream(jarFile);
                  byte[] buffer = new byte[4096];
                  int i;
                  while( (i = in.read(buffer,0,buffer.length)) != -1) {
                      out.write(buffer, 0, i);
                  }
                  in.close();
                  out.close();
              } else {
                  // Else it's a local file, nothing special to do.
                  jarFile = new File(path.getPath());
              }
              loadClasses(infoMap, jarFile);
          } catch (IOException ioe) {
              throw new DiffException(ioe);
          }
      }
docs: Load all the classes from the specified URL and store information
  about them in the specified map.
  This currently only works for jar files, <b>not</b> directories
  which contain classes in subdirectories or in the current directory.
  
  @param infoMap the map to store the ClassInfo in.
  @throws DiffException if there is an exception reading info about a
  class.