utterance.setLast(!tok.hasMoreTokens());
boolean isLast = (!tok.hasMoreTokens() && savedToken == null); utterance.setLast(isLast);
		public Object next() {		    ArrayList tokenList = new ArrayList();		    Utterance utterance = null;		    if (savedToken != null) {			tokenList.add(savedToken);			savedToken = null;		    }		    while (tok.hasMoreTokens()) {			Token token = tok.getNextToken();			if ((token.getWord().length() == 0) ||			    (tokenList.size() > 500) ||			    tok.isBreak()) {			    savedToken = token;			    break;			}			tokenList.add(token);		    }		    utterance =  new Utterance(Voice.this, tokenList);		    utterance.setSpeakable(speakable);		    utterance.setFirst(first);		    first = false;		    utterance.setLast(!tok.hasMoreTokens());		    return utterance;		}