let tuple2_wrappers wrapa wrapb = {
to_raw = (fun (a,b) -> Raw.Tuple [wrapa.to_raw a; wrapb.to_raw b]);
of_raw = function
| Raw.Tuple [a;b] -> wrapa.of_raw a, wrapb.of_raw b
| r -> raise (Wrong_type (fun outchan -> Printf.fprintf outchan
"Raw.Tuple 2 expected, got %a\n%!" Raw.to_channel r))
}