public boolean doMatch(CharStream cs, boolean ignore, boolean tent) {
        CharStream.Label label2;
        label2 = cs.mark();
        while (true) {
            if (!a.match(cs, !lexer && ignore, true) || label2.getPosition() == cs.position()) {
                break;
            }
            cs.unmark(label2);
            label2 = cs.mark();
            if (!lexer && ignore && grammar.ignoreStar != null) {
                grammar.ignoreStar.match(cs, false, true);
            }
        }
        cs.reset(label2);
        cs.unmark(label2);
        return true;

    }