functor (Param : sig val states : Zones.Ctx.t end->
  sig
    val name : string
    val debug : bool
    val used_stmts : Cil_types.stmt list Pervasives.ref
    val add_used_stmt : Cil_types.stmt -> unit
    val get_and_reset_used_stmts : unit -> Cil_types.stmt list
    type t = Zones.Data.t
    val pretty : Format.formatter -> Locations.Zone.t -> unit
    module StmtStartData :
      sig
        type data = Zones.Computer.t
        val clear : unit -> unit
        val mem : Cil_datatype.Stmt.Hashtbl.key -> bool
        val find : Cil_datatype.Stmt.Hashtbl.key -> Zones.Data.t
        val replace : Cil_datatype.Stmt.Hashtbl.key -> Zones.Data.t -> unit
        val add : Cil_datatype.Stmt.Hashtbl.key -> Zones.Data.t -> unit
        val iter :
          (Cil_datatype.Stmt.Hashtbl.key -> Zones.Data.t -> unit) -> unit
        val length : unit -> int
      end
    val combineStmtStartData :
      '->
      old:Locations.Zone.t -> Locations.Zone.t -> Locations.Zone.t option
    val combineSuccessors :
      Locations.Zone.t -> Locations.Zone.t -> Locations.Zone.t
    val doStmt : '-> 'Dataflow2.action
    val doInstr :
      Cil_types.stmt ->
      Cil_types.instr ->
      Locations.Zone.t -> Locations.Zone.t Dataflow2.action
    val filterStmt : '-> '-> bool
    val funcExitData : Locations.Zone.t
  end