docs: public void addURL(String fileName) throws IOException {
          String protocol = URLClassPath.getURLProtocol(fileName);
          if (protocol == null) {
              fileName = "file:" + fileName;
              protocol = "file";
          }
  
          String fileExtension = URLClassPath.getFileExtension(fileName);
          boolean isArchive = fileExtension != null && URLClassPath.isArchiveExtension(fileExtension);
  
          Entry entry;
          if ("file".equals(protocol)) {
              String localFileName = fileName.substring("file:".length());
  
              if (fileName.endsWith("/") || new File(localFileName).isDirectory()) {
                  entry = new LocalDirectoryEntry(localFileName);
              } else if (isArchive) {
                  entry = new LocalArchiveEntry(localFileName);
              } else {
                  throw new IOException("Classpath entry " + fileName + " is not a directory or archive file");
              }
          } else {
              if (fileName.endsWith("/")) {
                  entry = new RemoteDirectoryEntry(new URL(fileName));
              } else if (isArchive) {
                  entry = new RemoteArchiveEntry(new URL(fileName));
              } else {
                  throw new IOException("Classpath entry " + fileName + "  is not a remote directory or archive file");
              }
          }
  
          entryList.add(entry);
      }