Vector phases;
Vector phaseList;
    private static Vector parseFile(String fileUrl) {        //To calculate how long it takes to parse a description        Vector report = new Vector();        report.add("File: "+fileUrl+"\n");        long parseTime=System.currentTimeMillis();        try {            if (opts.description) {                BasePredicate.keepPredicates = true;            }            String language = getLanguageFromUrl(fileUrl);            //report.add("language: "+language);            Vector phases;            Phases top;            InputStream is=null;            try {                is = SFClassLoader.getResourceAsStream(fileUrl);                if (is == null) {                    String msg = MessageUtil.                            formatMessage(MSG_URL_TO_PARSE_NOT_FOUND, fileUrl);                    throw new SmartFrogParseException(msg);                }                top = (new SFParser(language)).sfParse(is);                if (opts.verbose && !opts.quiet) {                    printPhase("raw", top.toString());                }                report.add("   "+"raw phase: OK");            } catch (Exception ex) {                //report.add("   "+"raw phase: "+ex.getMessage());                report.add("   "+ "raw" +" phase: FAILED!");                throw ex;            } finally {                if(is!=null) {                    try {                        is.close();                    } catch (IOException swallowed) {                    }                }            }            phases = top.sfGetPhases();            String phase;            for (Enumeration e = phases.elements(); e.hasMoreElements(); ) {                phase = (String) e.nextElement();                try {                  top = top.sfResolvePhase(phase);                  if (opts.verbose && !opts.quiet) {                    printPhase(phase, top.toString());                  }                  report.add("   "+ phase +" phase: OK");                } catch (Exception ex) {                  //report.add("   "+ phase +" phase: "+ex.getMessage());                  report.add("   "+ phase +" phase: FAILED!");                  throw ex;                }            }            printDescription(top,"stdout_txt");            parseTime=System.currentTimeMillis()-parseTime;            //org.smartfrog.sfcore.common.Logger.log(" * "+fileUrl +" parsed in "+ parseTime + " millisecs.");            report .add(", parsed in "+ (parseTime) + " millisecs.");        } catch (Exception e) {            //report.add("Error: "+ e.getMessage());            //report.add("   "+ phase +" phase: FAILED!");            Logger.log("ERROR '"+fileUrl+"': \n"+ e+"\n");            Vector itemError = new Vector();            itemError.add(fileUrl);            if (e instanceof SmartFrogException) {                itemError.add(((SmartFrogException)e).toString("<BR><BR>"));            }            else {                itemError.add(e.toString());            }            errorReport.add(itemError);        }        return report;    }