stripWildCardAlts(disabledAlts);
          if ( disabledAlts.size()>0 ) {
            // nondeterminism; same input predicts multiple alts.
            // but don't emit error if greedy=true explicitly set
            boolean explicitlyGreedy = false;
            GrammarAST blockAST =
              d.dfa.nfa.grammar.getDecisionBlockAST(d.dfa.decisionNumber);
            if ( blockAST!=null ) {
              String greedyS = (String)blockAST.getBlockOption("greedy");
              if ( greedyS!=null && greedyS.equals("true") ) explicitlyGreedy = true;
            }
            if ( !explicitlyGreedy) ErrorManager.nondeterminism(this,d);
          }
        }
      }
    }
    Set<DFAState> danglingStates = getDanglingStates();
    if ( danglingStates.size()>0 ) {
      //System.err.println("no emanating edges for states: "+danglingStates);
      for (DFAState d : danglingStates) {
        ErrorManager.danglingState(this,d);
      }
    }
    if ( !nonLLStarDecision ) {
      List<Integer> unreachableAlts = dfa.getUnreachableAlts();
      if ( unreachableAlts!=null && unreachableAlts.size()>0 ) {
        // give different msg if it's an empty Tokens rule from delegate
        boolean isInheritedTokensRule = false;
        if ( dfa.isTokensRuleDecision() ) {
          for (Integer altI : unreachableAlts) {
            GrammarAST decAST = dfa.getDecisionASTNode();
            GrammarAST altAST = (GrammarAST)decAST.getChild(altI-1);
            GrammarAST delegatedTokensAlt =
              (GrammarAST)altAST.getFirstChildWithType(ANTLRParser.DOT);
            if ( delegatedTokensAlt !=null ) {
              isInheritedTokensRule = true;
              ErrorManager.grammarWarning(ErrorManager.MSG_IMPORTED_TOKENS_RULE_EMPTY,
                            dfa.nfa.grammar,
                            null,
                            dfa.nfa.grammar.name,
                            delegatedTokensAlt.getChild(0).getText());
            }
          }
        }
        if ( isInheritedTokensRule ) {
        }