log("To AudioOutput");
    public void processUtterance(Utterance u) throws ProcessException {        UtteranceProcessor[] processors;        if (utteranceProcessors == null) {            return;        }        if (u == null) {            throw new ProcessException("Utterance is null.");        }	runTimer.start("processing");        processors = new UtteranceProcessor[utteranceProcessors.size()];        processors = (UtteranceProcessor[])            utteranceProcessors.toArray(processors);        	log("Processing Utterance");	try {	    for (int i = 0; i < processors.length; i++) {		runProcessor(processors[i], u, runTimer);	    }	    if (outputQueue == null) {		outputUtterance(u, runTimer);	    } else {		runTimer.start("..post");		outputQueue.post(u);		runTimer.stop("..post");	    }	} catch (Exception e) {	    System.err.println("Trouble while processing utterance " + e);	    e.printStackTrace();	    u.getSpeakable().cancelled();	}	log("Done Processing Utterance");	runTimer.stop("processing");	if (dumpUtterance) {	    u.dump("Utterance");	}	if (dumpRelations) {	    u.dumpRelations("Utterance");	}	dumpWave(u);    }