let rm_unused_decl =
  Result.memo
    (fun new_proj_name ->
       clear_tables ();
       let visitor = new collect_visitor in
       ignore
         (Visitor.visitFramacFile
            (visitor:>Visitor.frama_c_visitor) (Ast.get ()));
       debug "[sparecode:globs] filtering done@.";
       let visitor = new filter_visitor in
       let new_prj = File.create_project_from_visitor new_proj_name visitor in
       let ctx = Parameters.get_selection_context () in
       Project.copy ~selection:ctx new_prj;
       new_prj)