docs: public File getFile() throws FileNotFoundException {
          URL url = this.getUrl();
  
          if (isJarURL(url)) {
              /*
                  This is actually request for file, that's packed into jar. Probably the current one, but that doesn't matters.
               */
              try {
                  url = extractActualUrl(url);
                  File file = File.createTempFile("canova_temp", "file");
                  file.deleteOnExit();
  
                  ZipFile zipFile = new ZipFile(url.getFile());
                  ZipEntry entry = zipFile.getEntry(this.resourceName);
                  if (entry == null) {
                      if (this.resourceName.startsWith("/")) {
                          entry = zipFile.getEntry(this.resourceName.replaceFirst("/", ""));
                          if (entry == null) {
                              throw new FileNotFoundException("Resource " + this.resourceName + " not found");
                          }
                      } else
                          throw new FileNotFoundException("Resource " + this.resourceName + " not found");
                  }
  
                  long size = entry.getSize();
  
                  InputStream stream = zipFile.getInputStream(entry);
                  FileOutputStream outputStream = new FileOutputStream(file);
                  byte[] array = new byte[1024];
                  int rd = 0;
                  long bytesRead = 0;
                  do {
                      rd = stream.read(array);
                      outputStream.write(array, 0, rd);
                      bytesRead += rd;
                  } while (bytesRead < size);
  
                  outputStream.flush();
                  outputStream.close();
  
                  stream.close();
                  zipFile.close();
  
                  return file;
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
  
          } else {
              /*
                  It's something in the actual underlying filesystem, so we can just go for it
               */
  
              try {
                  URI uri = new URI(url.toString().replaceAll(" ", "%20"));
                  return new File(uri.getSchemeSpecificPart());
              } catch (URISyntaxException e) {
                  return new File(url.getFile());
              }
          }
      }