functor
  (X : sig
         val analysis_name : string
         type t
         module T :
           sig
             type t = t
             val ty : t Type.t
             val name : string
             val descr : t Descr.t
             val packed_descr : Structural_descr.pack
             val reprs : t list
             val equal : t -> t -> bool
             val compare : t -> t -> int
             val hash : t -> int
             val pretty_code : Format.formatter -> t -> unit
             val internal_pretty_code :
               Type.precedence -> Format.formatter -> t -> unit
             val pretty : Format.formatter -> t -> unit
             val varname : t -> string
             val mem_project : (Project_skeleton.t -> bool) -> t -> bool
             val copy : t -> t
           end
         class virtual do_it : [Cumulative_analysis.Make.t] cumulative_class
       end->
  sig
    module Memo : sig val self : State.t end
    class do_it_cached :
      Kernel_function.t list ->
      object
        method behavior : Visitor_behavior.t
        method bottom : X.t
        method clean_kf_result : Cil_types.kernel_function -> X.t -> X.t
        method compute_funspec : Cil_types.kernel_function -> X.t
        method compute_kf : Cil_types.kernel_function -> X.t
        method current_func : Cil_types.fundec option
        method current_kf : Cil_types.kernel_function option
        method current_kinstr : Cil_types.kinstr
        method current_stmt : Cil_types.stmt option
        method cycle : Kernel_function.Hptset.t
        method fill_global_tables : unit
        method frama_c_plain_copy : Visitor.frama_c_visitor
        method get_filling_actions : (unit -> unit) Queue.t
        method join : X.t -> unit
        method plain_copy_visitor : Cil.cilVisitor
        method pop_stmt : Cil_types.stmt -> unit
        method project : Project.t option
        method push_stmt : Cil_types.stmt -> unit
        method queueInstr : Cil_types.instr list -> unit
        method reset_current_func : unit -> unit
        method reset_current_kf : unit -> unit
        method result : X.t
        method set_current_func : Cil_types.fundec -> unit
        method set_current_kf : Cil_types.kernel_function -> unit
        method specialize_state_on_call :
          Cil_types.kernel_function -> Db.Value.state
        method unqueueInstr : unit -> Cil_types.instr list
        method vallocates :
          Cil_types.identified_term list ->
          Cil_types.identified_term list Cil.visitAction
        method vallocation :
          Cil_types.allocation -> Cil_types.allocation Cil.visitAction
        method vannotation :
          Cil_types.global_annotation ->
          Cil_types.global_annotation Cil.visitAction
        method vassigns :
          Cil_types.assigns -> Cil_types.assigns Cil.visitAction
        method vattr :
          Cil_types.attribute -> Cil_types.attribute list Cil.visitAction
        method vattrparam :
          Cil_types.attrparam -> Cil_types.attrparam Cil.visitAction
        method vbehavior :
          Cil_types.funbehavior -> Cil_types.funbehavior Cil.visitAction
        method vblock : Cil_types.block -> Cil_types.block Cil.visitAction
        method vcode_annot :
          Cil_types.code_annotation ->
          Cil_types.code_annotation Cil.visitAction
        method vcompinfo :
          Cil_types.compinfo -> Cil_types.compinfo Cil.visitAction
        method vdeps : Cil_types.deps -> Cil_types.deps Cil.visitAction
        method venuminfo :
          Cil_types.enuminfo -> Cil_types.enuminfo Cil.visitAction
        method venumitem :
          Cil_types.enumitem -> Cil_types.enumitem Cil.visitAction
        method vexpr : Cil_types.exp -> Cil_types.exp Cil.visitAction
        method vfieldinfo :
          Cil_types.fieldinfo -> Cil_types.fieldinfo Cil.visitAction
        method vfile : Cil_types.file -> Cil_types.file Cil.visitAction
        method vfrees :
          Cil_types.identified_term list ->
          Cil_types.identified_term list Cil.visitAction
        method vfrom : Cil_types.from -> Cil_types.from Cil.visitAction
        method vfunc : Cil_types.fundec -> Cil_types.fundec Cil.visitAction
        method vglob :
          Cil_types.global -> Cil_types.global list Cil.visitAction
        method vglob_aux :
          Cil_types.global -> Cil_types.global list Cil.visitAction
        method videntified_predicate :
          Cil_types.identified_predicate ->
          Cil_types.identified_predicate Cil.visitAction
        method videntified_term :
          Cil_types.identified_term ->
          Cil_types.identified_term Cil.visitAction
        method vimpact_pragma :
          Cil_types.impact_pragma -> Cil_types.impact_pragma Cil.visitAction
        method vinit :
          Cil_types.varinfo ->
          Cil_types.offset ->
          Cil_types.init -> Cil_types.init Cil.visitAction
        method vinitoffs :
          Cil_types.offset -> Cil_types.offset Cil.visitAction
        method vinst :
          Cil_types.instr -> Cil_types.instr list Cil.visitAction
        method vlocal_init :
          Cil_types.varinfo ->
          Cil_types.local_init -> Cil_types.local_init Cil.visitAction
        method vlogic_ctor_info_decl :
          Cil_types.logic_ctor_info ->
          Cil_types.logic_ctor_info Cil.visitAction
        method vlogic_ctor_info_use :
          Cil_types.logic_ctor_info ->
          Cil_types.logic_ctor_info Cil.visitAction
        method vlogic_info_decl :
          Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
        method vlogic_info_use :
          Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
        method vlogic_label :
          Cil_types.logic_label -> Cil_types.logic_label Cil.visitAction
        method vlogic_type :
          Cil_types.logic_type -> Cil_types.logic_type Cil.visitAction
        method vlogic_type_def :
          Cil_types.logic_type_def ->
          Cil_types.logic_type_def Cil.visitAction
        method vlogic_type_info_decl :
          Cil_types.logic_type_info ->
          Cil_types.logic_type_info Cil.visitAction
        method vlogic_type_info_use :
          Cil_types.logic_type_info ->
          Cil_types.logic_type_info Cil.visitAction
        method vlogic_var_decl :
          Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
        method vlogic_var_use :
          Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
        method vloop_pragma :
          Cil_types.loop_pragma -> Cil_types.loop_pragma Cil.visitAction
        method vlval : Cil_types.lval -> Cil_types.lval Cil.visitAction
        method vmodel_info :
          Cil_types.model_info -> Cil_types.model_info Cil.visitAction
        method voffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
        method vpredicate :
          Cil_types.predicate -> Cil_types.predicate Cil.visitAction
        method vpredicate_node :
          Cil_types.predicate_node ->
          Cil_types.predicate_node Cil.visitAction
        method vquantifiers :
          Cil_types.quantifiers -> Cil_types.quantifiers Cil.visitAction
        method vslice_pragma :
          Cil_types.slice_pragma -> Cil_types.slice_pragma Cil.visitAction
        method vspec : Cil_types.funspec -> Cil_types.funspec Cil.visitAction
        method vstmt : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
        method vstmt_aux : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
        method vterm : Cil_types.term -> Cil_types.term Cil.visitAction
        method vterm_lhost :
          Cil_types.term_lhost -> Cil_types.term_lhost Cil.visitAction
        method vterm_lval :
          Cil_types.term_lval -> Cil_types.term_lval Cil.visitAction
        method vterm_node :
          Cil_types.term_node -> Cil_types.term_node Cil.visitAction
        method vterm_offset :
          Cil_types.term_offset -> Cil_types.term_offset Cil.visitAction
        method vtype : Cil_types.typ -> Cil_types.typ Cil.visitAction
        method vvdec : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
        method vvrbl : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
      end
    val kernel_function : Cil_types.kernel_function -> X.t
    val statement : Cil_types.stmt -> X.t
    val expr : Cil_types.stmt -> Cil_types.exp -> X.t
  end