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