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