let extract ~f_slice_names new_proj_name slicing_project =
  SlicingParameters.feedback ~level:1
    "exporting project to '%s'..." new_proj_name;
  !Db.Slicing.Request.apply_all_internal slicing_project;
  let module S = struct let get = f_slice_names end in
  let module Visi = Visibility (Sin
  let module Transform = Filter.F (Visiin
  let tmp_prj = Transform.build_cil_file new_proj_name slicing_project in
  let new_prj = !Db.Sparecode.rm_unused_globals ~project:tmp_prj () in
  Project.remove ~project:tmp_prj ();
  let ctx = Parameters.get_selection_context () in
  Project.copy ~selection:ctx new_prj;
  SlicingParameters.feedback
    ~level:2 "done (exporting project to '%s')." new_proj_name;
  new_prj