functor (Reach : Reachable_end_states->
  sig
    val name : string
    val debug : bool Pervasives.ref
    type t = Data_for_aorai.state
    val pretty : Format.formatter -> Data_for_aorai.state -> unit
    val funcExitData : 'Data_for_aorai.Aorai_state.Map.t
    val combineStmtStartData :
      '->
      old:Data_for_aorai.state ->
      Data_for_aorai.state -> Data_for_aorai.state option
    val combineSuccessors :
      Data_for_aorai.state -> Data_for_aorai.state -> Data_for_aorai.state
    val doStmt : Cil_types.stmt -> Data_for_aorai.state Dataflow.action
    val doInstr :
      Aorai_dataflow.Call_state.key ->
      Cil_types.instr ->
      'Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t ->
      (Data_for_aorai.Aorai_state.Set.t * Data_for_aorai.Aorai_state.Set.t *
       Data_for_aorai.Vals.t)
      Data_for_aorai.Aorai_state.Map.t Data_for_aorai.Aorai_state.Map.t
      Dataflow.action
    val filterStmt : Cil_types.stmt -> Cil_types.stmt -> bool
    module StmtStartData :
      sig
        type data = Data_for_aorai.state
        val clear : unit -> unit
        val mem : Cil_types.stmt -> bool
        val find : Cil_types.stmt -> data
        val replace : Cil_types.stmt -> data -> unit
        val add : Cil_types.stmt -> data -> unit
        val iter : (Cil_types.stmt -> data -> unit) -> unit
        val length : unit -> int
      end
    val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
  end