let neighbors (nfa : nfa)
(q : state) : state list =
let d_rhs = all_delta ~create:false nfa.delta q in
let state_list = Hashtbl.fold (fun state _ acc -> state::acc) d_rhs [] in
let e_rhs = which_states ~create:false nfa.epsilon q in
let new_state_list =
Hashtbl.fold (fun state _ acc -> state::acc) e_rhs state_list in
new_state_list