{ java.util.Enumeration e = runners.keys(); System.err.println("<runners"); while (e.hasMoreElements()) { System.err.println("  "+(String)e.nextElement()); } System.err.println("runners>"); }
    public synchronized MediaObject get (Request req)    throws ScillaException     {{    java.util.Enumeration e = runners.keys();    System.err.println("<runners");    while (e.hasMoreElements())    {	System.err.println("  "+(String)e.nextElement());    }    System.err.println("runners>");}	MediaObject obj;	String infilename = req.getInputFile();	String outfilename = getCacheFilename(req);	File infile = new File(infilename);	File outfile = new File(outfilename);	// don't cache this object	if (! req.allowCaching())	{	    return MediaFactory.createObject(req);	}	// already have runner	if (getRunner(outfilename) != null)	{	    return new CachedObject(outfilename);	}	// source exists, output in cache and source not newer than cache	if (infile.exists() && outfile.exists()		&& infile.lastModified() < outfile.lastModified())	{	    return new CachedObject(outfilename);	}	// create new MediaObject	obj = MediaFactory.createObject(req);	if (obj.allowCaching())	{	    RunnerObject runner = (RunnerObject) obj;	    // configure for caching	    ensureCacheDirectoryFor(outfilename);	    runner.setOutputFile(outfilename);	    runner.setDeleteOutput(false);	    // start converter	    runner.start();	}	return obj;    }