public IntervalSet[] getDecisionLookahead(ATNState s) {
//		System.out.println("LOOK("+s.stateNumber+")");
		if ( s==null ) {
			return null;
		}

		IntervalSet[] look = new IntervalSet[s.getNumberOfTransitions()];
		for (int alt = 0; alt < s.getNumberOfTransitions(); alt++) {
			look[alt] = new IntervalSet();
			Set<ATNConfig> lookBusy = new HashSet<ATNConfig>();
			boolean seeThruPreds = false; // fail to get lookahead upon pred
			_LOOK(s.transition(alt).target, null, EmptyPredictionContext.Instance,
				  look[alt], lookBusy, new BitSet(), seeThruPreds, false);
			// Wipe out lookahead for this alternative if we found nothing
			// or we had a predicate when we !seeThruPreds
			if ( look[alt].size()==0 || look[alt].contains(HIT_PRED) ) {
				look[alt] = null;
			}
		}
		return look;
	}
Calculates the SLL(1) expected lookahead set for each outgoing transition
of an {@link ATNState}. The returned array has one element for each
outgoing transition in {@code s}. If the closure from transition
<em>i</em> leads to a semantic predicate before matching a symbol, the
element at index <em>i</em> of the result will be {@code null}.

@param s the ATN state
@return the expected symbols for each outgoing transition of {@code s}.
runtime/Java/src/org/antlr/v4/runtime/atn/LL1Analyzer.java