private static void OptimizeStates(ATN atn)
{
IList<ATNState> states = atn.states;
int current = 0;
for (int i = 0; i < states.Count; i++)
{
ATNState state = states[i];
if (state == null)
{
continue;
}
if (i != current)
{
state.stateNumber = current;
states[current] = state;
states[i] = null;
}
current++;
}
//System.Console.WriteLine("ATN optimizer removed " + (states.Count - current) + " null states.");
while (states.Count > current)
states.RemoveAt(states.Count - 1);
}
}