let ref_flatten (l : supermapping list) : state list =
  let filter_pairs acc (l1,_,l2) = List.rev_append (snd !(!l1))
                                           (List.rev_append (snd !(!l2)) acc) in
  let pairs = List.fold_left filter_pairs [] l in
    List.fold_left (fun acc (x,y) -> x::y::acc) [] pairs