public boolean doMatch(CharStream cs, boolean ignore, boolean tent) {
        int la = cs.lookahead(0); // try la1 algorithm
        int ntry = 0;
        for(Production a : disjuncts) {
            final Set<Integer> firstA = a.getFirst();
            boolean tryA = firstA.contains(la) || firstA.contains(-1);
            if(tryA) {
                ntry ++;
            }
    //        if(DEBUG)
    //            if (tryA && tryB) {
    //                    Utils.warning(this, "Ambiguity in rule " + this + ". Use backtracking." + " first(A)=" + firstA + ", first(B)=" + firstB);
    //            }
            if (tryA && a.match(cs, !lexer && ignore, tent)) {
                return true;
            }
        }
        return false;
    }