let get_asked_bhv_from_name s_bhvs f_bhvs ki bname =
  let add_fct_bhv acc b =
    let add = match b with
      | None   -> bname = Cil.default_behavior_name
      | Some b -> b = bname && b <> Cil.default_behavior_name
    in
    match ki with
      | None (* not specified ki *)
      | Some Kglobal ->
          if add then (FunBhv bname)::acc else acc
      | Some Kstmt _ -> acc
  in

  let add_stmt_bhv acc (n,s,b) =
    if b = bname then
      match ki with
        | None -> (* not specified ki *) (StmtBhv (n, s, b))::acc
        | Some (Kstmt stmt) when stmt.sid = s.sid ->
            (StmtBhv (n, s, b))::acc
        | _ -> (* specified ki but not this one *) acc
      else acc
  in
  let acc = [] in
  let acc = add_fct_bhv acc None in (* default fct bhv *)
  let acc = List.fold_left add_stmt_bhv acc s_bhvs in
  let acc = List.fold_left (fun acc b -> add_fct_bhv acc (Some b)) acc f_bhvs in
    acc