method pStmtKind next fmt kind =
    let stmt_info fmt stmt = match opt_ff with
      | None -> Format.fprintf fmt "/* %d */" stmt.Cil_types.sid
      | Some ff ->
          let str_m = try
            let m = Fct_slice.get_stmt_mark ff stmt in
            SlicingMarks.mark_to_string m
          with Db.Pdg.NotFound -> "[---]"
          in
          if (M.is_call_stmt stmt)
          then Format.fprintf fmt "%t/* %s */" (str_call_sig ff stmt) str_m
          else Format.fprintf fmt "/* %s */" str_m
    in
    match self#current_stmt with
    | None -> assert false
    | Some s ->
        try
          Format.fprintf fmt "%a%a"
            stmt_info s
            (fun fmt -> super#pStmtKind next fmt) kind
        with Not_found -> (* some sub statements may be visible *)
          let sub_stmts = find_sub_stmts s in
          List.iter
            (fun st ->self#pStmtNext Cil.dummyStmt fmt st)
            sub_stmts