log.debug("fetching: "+url);
if (log.isDebugEnabled()) { log.debug("fetching: "+url); }
    public String getRemoteObjectFile (URL url)    throws ScillaException {	String suffix = MimeType.getExtensionFromFilename(url.toString());	String fn = getCachedRemoteObjectFilename(url, suffix);	// download object if not availble in cache	if (! (new File(fn)).exists()) {	    log.debug("fetching: "+url);	    InputStream in = null;	    OutputStream out = null;	    try {		ensureCacheDirectoryFor(fn);		out = new FileOutputStream(fn);		in = url.openStream();		byte[] b = new byte[BUFFER_SIZE];		int n = 0;		while ((n = in.read(b)) != -1) {		    out.write(b, 0, n);		}	    } catch (Throwable ex) {		log.warn("unable to fetch remote object", ex);		throw new ScillaException("unable to fetch remote object", ex);	    } finally {		if (in != null) {		    try {			in.close();		    } catch (IOException ex) {			// ignore		    }		}		if (out != null) {		    try {			out.close();		    } catch (IOException ex) {			// ignore		    }		}	    }	}	return fn;    }