let merge idx1 idx2 merge_a merge_b =
let sgn = Signature.merge idx1.sgn idx2.sgn merge_a in
let table = H.copy idx1.other in
let add k a2 =
let a =
try let a1 = H.find table k in merge_a a1 a2
with Not_found -> a2
in H.replace table k a
in H.iter add idx2.other;
let calls = merge_info_calls idx1.calls idx2.calls merge_a merge_b in
{sgn = sgn; calls = calls; other = table}