sig
  type localizable =
    Printer_tag.localizable =
      PStmt of (Cil_types.kernel_function * Cil_types.stmt)
    | PStmtStart of (Cil_types.kernel_function * Cil_types.stmt)
    | PLval of
        (Cil_types.kernel_function option * Cil_types.kinstr * Cil_types.lval)
    | PExp of
        (Cil_types.kernel_function option * Cil_types.kinstr * Cil_types.exp)
    | PTermLval of
        (Cil_types.kernel_function option * Cil_types.kinstr * Property.t *
         Cil_types.term_lval)
    | PVDecl of
        (Cil_types.kernel_function option * Cil_types.kinstr *
         Cil_types.varinfo)
    | PGlobal of Cil_types.global
    | PIP of Property.t
  module Locs :
    sig
      type state
      val create : unit -> Pretty_source.Locs.state
      val clear : Pretty_source.Locs.state -> unit
    end
  val fold_preconds_at_callsite : Cil_types.stmt -> unit
  val are_preconds_unfolded : Cil_types.stmt -> bool
  val display_source :
    Cil_types.global list ->
    GSourceView.source_buffer ->
    host:Gtk_helper.host ->
    highlighter:(Pretty_source.localizable -> start:int -> stop:int -> unit) ->
    selector:(button:int -> Pretty_source.localizable -> unit) ->
    Pretty_source.Locs.state -> unit
  val hilite : Pretty_source.Locs.state -> unit
  val stmt_start : Pretty_source.Locs.state -> Cil_types.stmt -> int
  val locate_localizable :
    Pretty_source.Locs.state ->
    Pretty_source.localizable -> (int * int) option
  val kf_of_localizable :
    Pretty_source.localizable -> Cil_types.kernel_function option
  val ki_of_localizable : Pretty_source.localizable -> Cil_types.kinstr
  val varinfo_of_localizable :
    Pretty_source.localizable -> Cil_types.varinfo option
  val localizable_from_locs :
    Pretty_source.Locs.state ->
    file:Datatype.Filepath.t -> line:int -> Pretty_source.localizable list
  val loc_to_localizable :
    ?precise_col:bool ->
    Filepath.position -> Pretty_source.localizable option
end