code: public ZipFile getZipFile()
      throws IOException
    {
      isCacheValid();
  
      ZipFile zipFile = _zipFileRef.getAndSet(null);
  
      if (zipFile != null) {
        return zipFile;
      }
  
      if (_backingIsFile) {
        try {
          zipFile = new ZipFile(getBacking().getNativePath());
  
          /*
          if (_backing.getNativePath().indexOf("cssparser") >= 0) {
            System.out.println("ZIP: " + _backing.getNativePath() + " " + zipFile);
            Thread.dumpStack();
          }
          */
        }
        catch (IOException ex) {
          if (log.isLoggable(Level.FINE))
            log.log(Level.FINE, L.l("Error opening jar file '{0}'", getBacking().getNativePath()));
  
          throw ex;
        }
  
        getLastModifiedImpl();
      }
  
      return zipFile;
    }
docs: Returns the Java ZipFile for this Jar.  Accessing the entries with
  the ZipFile is faster than scanning through them.
  
  getJarFile is not thread safe.