sig
  val name : string
  val debug : bool Pervasives.ref
  val mayReach : bool Pervasives.ref
  type t = unit * int * Reachingdefs.IOS.t Reachingdefs.IH.t
  module StmtStartData :
    sig
      type data = unit * int * IOS.t IH.t
      val clear : unit -> unit
      val mem : int -> bool
      val find : int -> data
      val replace : int -> data -> unit
      val add : int -> data -> unit
      val iter : (int -> data -> unit) -> unit
      val length : unit -> int
    end
  val copy : 'a * 'b * 'Inthash.t -> unit * 'b * 'Inthash.t
  val defIdStmtHash : Cil_types.stmt Inthash.t
  val sidStmtHash : Cil_types.stmt Inthash.t
  val pretty : '-> '-> unit
  val nextDefId : int Pervasives.ref
  val num_defs : Cil_types.stmt -> int
  val computeFirstPredecessor :
    Cil_types.stmt -> 'a * int * 'Inthash.t -> unit * int * 'Inthash.t
  val combinePredecessors :
    Cil_types.stmt ->
    old:Reachingdefs.ReachingDef.t ->
    Reachingdefs.ReachingDef.t ->
    (unit * int * Reachingdefs.IOS.t Reachingdefs.IH.t) option
  val doInstr :
    '->
    Cil_types.instr ->
    'b * 'c * '->
    (unit * int * Reachingdefs.IOS.t Reachingdefs.IH.t)
    Reachingdefs.DF.action
  val doStmt :
    Cil_types.stmt ->
    'a * 'b * 'Reachingdefs.IH.t -> 'Reachingdefs.DF.stmtaction
  val doGuard :
    '->
    '->
    '-> 'Reachingdefs.DF.guardaction * 'Reachingdefs.DF.guardaction
  val filterStmt : '-> bool
  val stmt_can_reach : '-> '-> bool
  val doEdge : '-> '-> '-> 'c
end