if (tryOnly) return false;
    private boolean matchP(CharIndexed input, REMatch mymatch) {    REMatch.REMatchList newMatch = new REMatch.REMatchList();    REToken tk;    for (int i=0; i < options.size(); i++) {	// In order that the backtracking can work,	// each option must be chained to the next token.	// But the chain method has some side effect, so	// we use clones.	tk = (REToken)((REToken) options.elementAt(i)).clone();	tk.chain(this.next);	tk.setUncle(this.uncle);	tk.subIndex = this.subIndex;	REMatch tryMatch = (REMatch) mymatch.clone();	if (tk.match(input, tryMatch)) { // match was successful	    newMatch.addTail(tryMatch);	} // is a match    } // try next option    if (newMatch.head != null) {	    // set contents of mymatch equal to newMatch	    // try each one that matched	mymatch.assignFrom(newMatch.head);	    return true;	} else {	    return false;	}    }