sig
  type t
  val inplace : unit -> Visitor_behavior.t
  val copy : Project.t -> Visitor_behavior.t
  val refresh : Project.t -> Visitor_behavior.t
  val is_fresh : Visitor_behavior.t -> bool
  val is_copy : Visitor_behavior.t -> bool
  val get_project : Visitor_behavior.t -> Project.t option
  module Reset :
    sig
      val varinfo : Visitor_behavior.t -> unit
      val compinfo : Visitor_behavior.t -> unit
      val enuminfo : Visitor_behavior.t -> unit
      val enumitem : Visitor_behavior.t -> unit
      val typeinfo : Visitor_behavior.t -> unit
      val stmt : Visitor_behavior.t -> unit
      val logic_info : Visitor_behavior.t -> unit
      val logic_type_info : Visitor_behavior.t -> unit
      val fieldinfo : Visitor_behavior.t -> unit
      val model_info : Visitor_behavior.t -> unit
      val logic_var : Visitor_behavior.t -> unit
      val kernel_function : Visitor_behavior.t -> unit
      val fundec : Visitor_behavior.t -> unit
    end
  module type Get =
    sig
      val varinfo :
        Visitor_behavior.t -> Cil_types.varinfo -> Cil_types.varinfo
      val compinfo :
        Visitor_behavior.t -> Cil_types.compinfo -> Cil_types.compinfo
      val enuminfo :
        Visitor_behavior.t -> Cil_types.enuminfo -> Cil_types.enuminfo
      val enumitem :
        Visitor_behavior.t -> Cil_types.enumitem -> Cil_types.enumitem
      val typeinfo :
        Visitor_behavior.t -> Cil_types.typeinfo -> Cil_types.typeinfo
      val stmt : Visitor_behavior.t -> Cil_types.stmt -> Cil_types.stmt
      val logic_info :
        Visitor_behavior.t -> Cil_types.logic_info -> Cil_types.logic_info
      val logic_type_info :
        Visitor_behavior.t ->
        Cil_types.logic_type_info -> Cil_types.logic_type_info
      val fieldinfo :
        Visitor_behavior.t -> Cil_types.fieldinfo -> Cil_types.fieldinfo
      val model_info :
        Visitor_behavior.t -> Cil_types.model_info -> Cil_types.model_info
      val logic_var :
        Visitor_behavior.t -> Cil_types.logic_var -> Cil_types.logic_var
      val kernel_function :
        Visitor_behavior.t ->
        Cil_types.kernel_function -> Cil_types.kernel_function
      val fundec : Visitor_behavior.t -> Cil_types.fundec -> Cil_types.fundec
    end
  module Get : Get
  module Get_orig : Get
  module Memo : Get
  module type Set =
    sig
      val varinfo :
        Visitor_behavior.t -> Cil_types.varinfo -> Cil_types.varinfo -> unit
      val compinfo :
        Visitor_behavior.t ->
        Cil_types.compinfo -> Cil_types.compinfo -> unit
      val enuminfo :
        Visitor_behavior.t ->
        Cil_types.enuminfo -> Cil_types.enuminfo -> unit
      val enumitem :
        Visitor_behavior.t ->
        Cil_types.enumitem -> Cil_types.enumitem -> unit
      val typeinfo :
        Visitor_behavior.t ->
        Cil_types.typeinfo -> Cil_types.typeinfo -> unit
      val stmt :
        Visitor_behavior.t -> Cil_types.stmt -> Cil_types.stmt -> unit
      val logic_info :
        Visitor_behavior.t ->
        Cil_types.logic_info -> Cil_types.logic_info -> unit
      val logic_type_info :
        Visitor_behavior.t ->
        Cil_types.logic_type_info -> Cil_types.logic_type_info -> unit
      val fieldinfo :
        Visitor_behavior.t ->
        Cil_types.fieldinfo -> Cil_types.fieldinfo -> unit
      val model_info :
        Visitor_behavior.t ->
        Cil_types.model_info -> Cil_types.model_info -> unit
      val logic_var :
        Visitor_behavior.t ->
        Cil_types.logic_var -> Cil_types.logic_var -> unit
      val kernel_function :
        Visitor_behavior.t ->
        Cil_types.kernel_function -> Cil_types.kernel_function -> unit
      val fundec :
        Visitor_behavior.t -> Cil_types.fundec -> Cil_types.fundec -> unit
    end
  module Set : Set
  module Set_orig : Set
  module type Unset =
    sig
      val varinfo : Visitor_behavior.t -> Cil_types.varinfo -> unit
      val compinfo : Visitor_behavior.t -> Cil_types.compinfo -> unit
      val enuminfo : Visitor_behavior.t -> Cil_types.enuminfo -> unit
      val enumitem : Visitor_behavior.t -> Cil_types.enumitem -> unit
      val typeinfo : Visitor_behavior.t -> Cil_types.typeinfo -> unit
      val stmt : Visitor_behavior.t -> Cil_types.stmt -> unit
      val logic_info : Visitor_behavior.t -> Cil_types.logic_info -> unit
      val logic_type_info :
        Visitor_behavior.t -> Cil_types.logic_type_info -> unit
      val fieldinfo : Visitor_behavior.t -> Cil_types.fieldinfo -> unit
      val model_info : Visitor_behavior.t -> Cil_types.model_info -> unit
      val logic_var : Visitor_behavior.t -> Cil_types.logic_var -> unit
      val kernel_function :
        Visitor_behavior.t -> Cil_types.kernel_function -> unit
      val fundec : Visitor_behavior.t -> Cil_types.fundec -> unit
    end
  module Unset : Unset
  module Unset_orig : Unset
  module Iter :
    sig
      val varinfo :
        Visitor_behavior.t ->
        (Cil_types.varinfo -> Cil_types.varinfo -> unit) -> unit
      val compinfo :
        Visitor_behavior.t ->
        (Cil_types.compinfo -> Cil_types.compinfo -> unit) -> unit
      val enuminfo :
        Visitor_behavior.t ->
        (Cil_types.enuminfo -> Cil_types.enuminfo -> unit) -> unit
      val enumitem :
        Visitor_behavior.t ->
        (Cil_types.enumitem -> Cil_types.enumitem -> unit) -> unit
      val typeinfo :
        Visitor_behavior.t ->
        (Cil_types.typeinfo -> Cil_types.typeinfo -> unit) -> unit
      val stmt :
        Visitor_behavior.t ->
        (Cil_types.stmt -> Cil_types.stmt -> unit) -> unit
      val logic_info :
        Visitor_behavior.t ->
        (Cil_types.logic_info -> Cil_types.logic_info -> unit) -> unit
      val logic_type_info :
        Visitor_behavior.t ->
        (Cil_types.logic_type_info -> Cil_types.logic_type_info -> unit) ->
        unit
      val fieldinfo :
        Visitor_behavior.t ->
        (Cil_types.fieldinfo -> Cil_types.fieldinfo -> unit) -> unit
      val model_info :
        Visitor_behavior.t ->
        (Cil_types.model_info -> Cil_types.model_info -> unit) -> unit
      val logic_var :
        Visitor_behavior.t ->
        (Cil_types.logic_var -> Cil_types.logic_var -> unit) -> unit
      val kernel_function :
        Visitor_behavior.t ->
        (Cil_types.kernel_function -> Cil_types.kernel_function -> unit) ->
        unit
      val fundec :
        Visitor_behavior.t ->
        (Cil_types.fundec -> Cil_types.fundec -> unit) -> unit
    end
  module Fold :
    sig
      val varinfo :
        Visitor_behavior.t ->
        (Cil_types.varinfo -> Cil_types.varinfo -> '-> 'a) -> '-> 'a
      val compinfo :
        Visitor_behavior.t ->
        (Cil_types.compinfo -> Cil_types.compinfo -> '-> 'a) -> '-> 'a
      val enuminfo :
        Visitor_behavior.t ->
        (Cil_types.enuminfo -> Cil_types.enuminfo -> '-> 'a) -> '-> 'a
      val enumitem :
        Visitor_behavior.t ->
        (Cil_types.enumitem -> Cil_types.enumitem -> '-> 'a) -> '-> 'a
      val typeinfo :
        Visitor_behavior.t ->
        (Cil_types.typeinfo -> Cil_types.typeinfo -> '-> 'a) -> '-> 'a
      val stmt :
        Visitor_behavior.t ->
        (Cil_types.stmt -> Cil_types.stmt -> '-> 'a) -> '-> 'a
      val logic_info :
        Visitor_behavior.t ->
        (Cil_types.logic_info -> Cil_types.logic_info -> '-> 'a) ->
        '-> 'a
      val logic_type_info :
        Visitor_behavior.t ->
        (Cil_types.logic_type_info -> Cil_types.logic_type_info -> '-> 'a) ->
        '-> 'a
      val fieldinfo :
        Visitor_behavior.t ->
        (Cil_types.fieldinfo -> Cil_types.fieldinfo -> '-> 'a) -> '-> 'a
      val model_info :
        Visitor_behavior.t ->
        (Cil_types.model_info -> Cil_types.model_info -> '-> 'a) ->
        '-> 'a
      val logic_var :
        Visitor_behavior.t ->
        (Cil_types.logic_var -> Cil_types.logic_var -> '-> 'a) -> '-> 'a
      val kernel_function :
        Visitor_behavior.t ->
        (Cil_types.kernel_function -> Cil_types.kernel_function -> '-> 'a) ->
        '-> 'a
      val fundec :
        Visitor_behavior.t ->
        (Cil_types.fundec -> Cil_types.fundec -> '-> 'a) -> '-> 'a
    end
  val cfile : Visitor_behavior.t -> Cil_types.file -> Cil_types.file
  val cinitinfo :
    Visitor_behavior.t -> Cil_types.initinfo -> Cil_types.initinfo
  val cblock : Visitor_behavior.t -> Cil_types.block -> Cil_types.block
  val cfunspec : Visitor_behavior.t -> Cil_types.funspec -> Cil_types.funspec
  val cfunbehavior :
    Visitor_behavior.t -> Cil_types.funbehavior -> Cil_types.funbehavior
  val cidentified_term :
    Visitor_behavior.t ->
    Cil_types.identified_term -> Cil_types.identified_term
  val cidentified_predicate :
    Visitor_behavior.t ->
    Cil_types.identified_predicate -> Cil_types.identified_predicate
  val cexpr : Visitor_behavior.t -> Cil_types.exp -> Cil_types.exp
  val ccode_annotation :
    Visitor_behavior.t ->
    Cil_types.code_annotation -> Cil_types.code_annotation
end