sig
  type t_in = Cil_types.code_annotation
  module Pscope :
    sig
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      type data = Cil_datatype.Stmt.Set.t
      val set : data -> unit
      val get : unit -> data
      val clear : unit -> unit
    end
  module Pscope_warn :
    sig
      type data_in_list = Cil_datatype.Code_annotation.t
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      type data = Cil_datatype.Code_annotation.t list
      val set : data -> unit
      val get : unit -> data
      val clear : unit -> unit
      val iter : (data_in_list -> unit) -> unit
      val fold_left : ('-> data_in_list -> 'a) -> '-> 'a
    end
  val clear : unit -> unit
  val help : string
  val get_info : '-> string
  val compute :
    Db_types.kernel_function ->
    Cil_types.stmt -> Cil_types.code_annotation -> string
  val tag_stmt :
    Cil_datatype.Stmt.Set.elt -> string * [> `BACKGROUND of string ] list
  val tag_annot :
    Cil_types.code_annotation -> string * [> `BACKGROUND of string ] list
end