functor
  (Param : sig
             val current_pdg : Build.BuildPdg.t
             val ctrl_dpds_infos : CtrlDpds.t
           end->
  sig
    val name : string
    val pdg_debug : ('a, Format.formatter, unit) Pervasives.format -> 'a
    val debug : bool Pervasives.ref
    type t = PdgTypes.data_state
    val current_pdg : Build.BuildPdg.t
    val current_function : Cil_types.kernel_function
    val ctrl_dpds_infos : CtrlDpds.t
    module StmtStartData :
      sig
        type data = PdgTypes.data_state
        val states : PdgTypes.data_state Cil_datatype.Stmt.Hashtbl.t
        val clear : unit -> unit
        val mem : Cil_datatype.Stmt.Hashtbl.key -> bool
        val find : Cil_datatype.Stmt.Hashtbl.key -> PdgTypes.data_state
        val replace :
          Cil_datatype.Stmt.Hashtbl.key -> PdgTypes.data_state -> unit
        val add :
          Cil_datatype.Stmt.Hashtbl.key -> PdgTypes.data_state -> unit
        val iter :
          (Cil_datatype.Stmt.Hashtbl.key -> PdgTypes.data_state -> unit) ->
          unit
        val length : unit -> int
      end
    val copy : Build.Computer.t -> Build.Computer.t
    val pretty : Format.formatter -> Build.Computer.t -> unit
    val computeFirstPredecessor : '-> '-> 'b
    val combinePredecessors :
      Cil_types.stmt ->
      old:PdgTypes.data_state ->
      Build.Computer.t -> PdgTypes.data_state option
    val doInstr :
      Cil_types.stmt ->
      Cil_types.instr ->
      PdgTypes.data_state -> PdgTypes.data_state Dataflow.action
    val doStmt : Cil_types.stmt -> Build.Computer.t -> 'Dataflow.stmtaction
    val filterStmt : '-> bool
    val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
    val doGuard :
      '-> '-> '-> 'Dataflow.guardaction * 'Dataflow.guardaction
    val doEdge : '-> '-> '-> 'c
  end