(* metasw := List.fold_left (fun s (i, _) -> IntSet.add i s) !metasw m; *)
w
in
+ (* Warning: the following let cannot be expanded since it forces the
+ right evaluation order!!!! *)
let w = (weight_of ty) + (weight_of left) + (weight_of right) in
w + !metasw
(* (4 * IntSet.cardinal !metasw) *)