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