public virtual void Visit_([NotNull] ATNState s, [NotNull] ISet<int> visited)
{
if (!visited.Add(s.stateNumber))
return;
visited.Add(s.stateNumber);
VisitState(s);
int n = s.NumberOfTransitions;
for (int i = 0; i < n; i++)
{
Transition t = s.Transition(i);
Visit_(t.target, visited);
}
}