method private mk_new_behavior_name kf_callee =
    let error () =
      (* if index becomes 0 (again): serious problem, but unlikely to happen *)
      error "Generated too many behavior names." ;
      assert false
    in
    let kf = Extlib.the self#current_kf (* get englobing kf *)
    in let known_behaviors = Kernel_function.all_function_behaviors kf
       in let rec aux_new_name i =
            (* [JS 20110607] seem to be equivalent to 
               Kernel_function.fresh_behavior_name *)

            let name = 
              precond_prefix ^ "_" ^ 
                (Kernel_function.get_name kf_callee) ^ "_" ^ (string_of_int i)
            in if List.mem name known_behaviors then (
              let nindex = i + 1
              in if nindex = 0 then error ()
                (* if index becomes 0 (again): serious problem, but unlikely to happen *)
                else aux_new_name nindex
            ) else (name, i)
          in
          let (name, new_index) =
            try
              let i = H.find bhv_index_table kf
              in
              let nindex = i+1
              in if nindex = 0 then error ()
                else aux_new_name nindex
            with Not_found ->
              aux_new_name 0
          in
          H.replace bhv_index_table kf new_index ;
          name