let fresh_name prefix basename =
  let x = identifier basename in
  let m = if x="" then prefix else Printf.sprintf "%s_%s" prefix x in
  try
    let p = Hashtbl.find gfresh m in
    incr p ; Printf.sprintf "%s_%d" m !p
  with Not_found ->
    Hashtbl.add gfresh m (ref 0) ; m