functor (X : sig val modified : Cil_types.stmt -> bool end->
  sig
    val name : string
    val debug : bool Pervasives.ref
    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 add : Cil_datatype.Stmt.Hashtbl.key -> data -> unit
        val find : Cil_datatype.Stmt.Hashtbl.key -> data
        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.ForwardScope.StmtStartData.data
    val pretty : Format.formatter -> Datascope.State.t -> unit
    val copy : Datascope.ForwardScope.t -> Datascope.ForwardScope.t
    val computeFirstPredecessor :
      '-> Datascope.State.t -> Datascope.State.t
    val combinePredecessors :
      Cil_types.stmt ->
      old:Datascope.State.t -> Datascope.State.t -> Datascope.State.t option
    val doStmt : '-> '-> 'Dataflow.stmtaction
    val doInstr :
      Cil_types.stmt ->
      '-> Datascope.State.t -> Datascope.State.t Dataflow.action
    val stmt_can_reach : '-> '-> bool
    val filterStmt : '-> bool
    val doGuard :
      '-> '-> '-> 'Dataflow.guardaction * 'Dataflow.guardaction
    val doEdge : '-> '-> '-> 'c
  end