protected void collectClosure(Set<State> collected) {
        Collection<State> epsilonState = transfers.get(Transfers.EPSILON);
        for (State state : epsilonState) {
            if (!collected.contains(state)) {
                collected.add(state);
                state.collectClosure(collected);
            }
        }
    }