code: private JarFile getJarFile()
      throws IOException
    {
      JarFile jarFile = null;
  
      isCacheValid();
  
      if (! _backingIsFile) {
        throw new FileNotFoundException(getBacking().getNativePath());
      }
      
      try {
        jarFile = new JarFile(getBacking().getNativePath());
  
          /*
          if (_backing.getNativePath().indexOf("cssparser.jar") > 0)
            System.out.println("JAR: " + _backing + " " + jarFile);
            */
      }
      catch (IOException ex) {
        if (log.isLoggable(Level.FINE))
          log.log(Level.FINE, L.l("Error opening jar file '{0}'", getBacking().getNativePath()));
  
        throw ex;
      }
  
      return jarFile;
    }
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.