for (REMatch m = recurrent; m != null; m = m.next) { m.matchFlags &= ~REMatch.MF_FIND_ALL; }
    private static REMatch findDoables(REToken tk,			CharIndexed input, REMatch mymatch) {	    REMatch.REMatchList doables = new REMatch.REMatchList();	    // try next repeat at all possible positions	    for (REMatch current = mymatch;		 current != null; current = current.next) {		REMatch recurrent = (REMatch) current.clone();		int origin = recurrent.index;		tk = (REToken) tk.clone();		tk.next = tk.uncle = null;		if (tk.match(input, recurrent)) {		    if (recurrent.index == origin) recurrent.empty = true;		    // add all items in current to doables array		    doables.addTail(recurrent);		}	    }	    return doables.head;    }