sig
  module type S =
    sig
      type t
      val get : Db.Properties.Status.S.t -> Cil_types.annotation_status
      val set :
        Db.Properties.Status.S.t -> Cil_types.annotation_status -> unit
      val update :
        Db.Properties.Status.S.t -> Cil_types.annotation_status -> unit
      val get_all :
        Db.Properties.Status.S.t -> Cil_types.annotation_status list
      val strongest : Db.Properties.Status.S.t -> Cil_types.annotation_status
    end
  module CodeAnnotation :
    sig
      type t = Cil_types.code_annotation
      val get : t -> Cil_types.annotation_status
      val set : t -> Cil_types.annotation_status -> unit
      val update : t -> Cil_types.annotation_status -> unit
      val get_all : t -> Cil_types.annotation_status list
      val strongest : t -> Cil_types.annotation_status
    end
  module Behavior :
    sig
      type t = Db_types.kernel_function * Cil_types.funbehavior
      val get : t -> Cil_types.annotation_status
      val set : t -> Cil_types.annotation_status -> unit
      val update : t -> Cil_types.annotation_status -> unit
      val get_all : t -> Cil_types.annotation_status list
      val strongest : t -> Cil_types.annotation_status
    end
  module Predicate :
    sig
      type t = Cil_types.identified_predicate
      val get : t -> Cil_types.annotation_status
      val set : t -> Cil_types.annotation_status -> unit
      val update : t -> Cil_types.annotation_status -> unit
      val get_all : t -> Cil_types.annotation_status list
      val strongest : t -> Cil_types.annotation_status
    end
end