functor (X : sig val modified : Cil_types.stmt -> bool end->
  sig
    type t = State.t = Start | NotSeen | Modif | SameVal
    val pretty : Format.formatter -> t -> unit
    val bottom : t
    val merge : t -> t -> t
    val join : t -> t -> t
    val equal : t -> t -> bool
    val test_and_merge : old:t -> t -> t option
    val join_and_is_included : t -> t -> t * bool
    val is_included : t -> t -> bool
    val transfer : bool -> t -> t
    val transfer_stmt :
      Cil_types.stmt ->
      Datascope.State.t -> (Cil_types.stmt * Datascope.State.t) list
  end