method private record_and_clear_function_metrics metrics =
    let filename = metrics.cfile_name
    and funcname = metrics.cfunc_name in
    (try
       let fun_tbl = Datatype.String.Map.find filename metrics_map in
       self#update_metrics_map filename
         (Datatype.String.Map.add funcname !local_metrics fun_tbl);
     with
       | Not_found ->
         let new_stringmap =
           Datatype.String.Map.add funcname !local_metrics Datatype.String.Map.empty in
         self#update_metrics_map filename new_stringmap;
    );
    local_metrics := empty_metrics;