functor (X : sig val modified : Cil_types.stmt -> bool end->
  sig
    val name : string
    val debug : bool
    module StmtStartData :
      sig
        type key = Cil_types.stmt
        type data = State.t
        type t = data Cil_datatype.Stmt.Hashtbl.t
        val states : t
        val clear : unit -> unit
        val mem : Cil_datatype.Stmt.Hashtbl.key -> bool
        val find : Cil_datatype.Stmt.Hashtbl.key -> data
        val replace : Cil_datatype.Stmt.Hashtbl.key -> data -> unit
        val add : Cil_datatype.Stmt.Hashtbl.key -> data -> unit
        val iter : (Cil_datatype.Stmt.Hashtbl.key -> data -> unit) -> unit
        val fold :
          (Cil_datatype.Stmt.Hashtbl.key -> data -> '-> 'a) -> '-> 'a
        val length : unit -> int
        val pretty :
          Format.formatter -> State.t Cil_datatype.Stmt.Hashtbl.t -> unit
      end
    type t = Datascope.BackwardScope.StmtStartData.data
    val pretty : Format.formatter -> Datascope.State.t -> unit
    val combineStmtStartData :
      '->
      old:Datascope.State.t -> Datascope.State.t -> Datascope.State.t option
    val combineSuccessors :
      Datascope.State.t -> Datascope.State.t -> Datascope.State.t
    val doStmt : '-> 'Dataflow2.action
    val doInstr :
      Cil_types.stmt ->
      '-> Datascope.State.t -> Datascope.State.t Dataflow2.action
    val filterStmt : '-> '-> bool
    val funcExitData : Datascope.State.t
  end