let called_info (project, ff) call_stmt =
    let info = match ff with
      | Isrc | Iproto -> None
      | Iff (slice, _) ->
          try
            let _, ff_marks = slice.T.ff_marks in
            let called, _ =
              PdgIndex.FctIndex.find_call ff_marks call_stmt in
          match called with
            | None | Some (None->
                SlicingParameters.error "Undefined called function call-%d\n"
                  call_stmt.sid;
                  M.bug "unknown call"
              | Some (Some (T.CallSrc _)) -> None
              | Some (Some (T.CallSlice ff)) ->
                  let kf_ff = M.get_ff_kf ff in
                  let src_visible = is_src_fun_visible project kf_ff in
                    (Some (kf_ff, Iff (ff, src_visible)))
          with Not_found ->
            (* the functor should call [called_info] only for visible calls *)
            assert false
    in
     SlicingParameters.debug ~level:2 "[SlicingTransform.Visibility.called_info] called_info stmt %d -> %s@."
        call_stmt.sid (if info = None then "src" else "some slice");
    info