let merge_nfas (target : nfa) (source : nfa) : unit =
  let offset = target.next_q in
  let convert x = x + offset in
    iter (fun source_q -> add target.q (convert source_q)) source.q;
    copy_table source.delta target.delta convert;
    copy_table source.epsilon target.epsilon convert;
    target.next_q <- convert source.next_q