public URL convertFromCachedURL(URL u) {
      if(u == null) return u;
      
      try {
         String urlStr = u.toString(); 
         String rootURLStr = this.rootDir.toURL().toString();
         //If the URL isn't a file protocol and the URL doesn't start with the Cache Dir then its not 
         //a Cache URL so just return it
         if(!u.getProtocol().equals("file") || !urlStr.startsWith(rootURLStr)) {
            return u;
         }
         
         //Check properties for download
         Properties infoProps = readInfo(u);
         String nonCacheURL = infoProps.getProperty("resource");
         if(nonCacheURL != null && !nonCacheURL.equals("")) {
            return new URL(nonCacheURL);
         }
         
         //Now convert it the manually way
         int s = rootURLStr.length();
         int e = urlStr.length();
         urlStr = urlStr.substring(s, e);
         s = 0;
         e = urlStr.indexOf('/', s);
         String protocol = urlStr.substring(s, e);
         s = e+1;
         e = urlStr.indexOf('/', s);
         String host = urlStr.substring(s, e);
         s = e+1;
         e = urlStr.indexOf('/', s);
         String port = urlStr.substring(s, e);
         s = e+1;
         e = urlStr.length();
         String file = urlStr.substring(s, e);
         if(file.endsWith("_root_")) {
            file = file.substring(0, file.lastIndexOf("/")+1);
         }
         
         return new URL(protocol, host, Integer.valueOf(port).intValue(), file);
      }
      catch(Exception badURL) {
         logger.log(Level.WARNING, "Can't convert Cache URL to a regular URL:"+u.toString(), badURL);
      }
            
      return u;
   }