sig
  module Instantiator_builder :
    sig
      module type Generator_sig =
        sig
          module Hashtbl : Datatype.Hashtbl
          type override_key = Hashtbl.key
          val function_name : string
          val well_typed_call :
            Cil_types.lval option ->
            Cil_types.varinfo -> Cil_types.exp list -> bool
          val key_from_call :
            Cil_types.lval option ->
            Cil_types.varinfo ->
            Cil_types.exp list ->
            Instantiate.Instantiator_builder.Generator_sig.override_key
          val retype_args :
            Instantiate.Instantiator_builder.Generator_sig.override_key ->
            Cil_types.exp list -> Cil_types.exp list
          val args_for_original :
            Instantiate.Instantiator_builder.Generator_sig.override_key ->
            Cil_types.exp list -> Cil_types.exp list
          val generate_prototype :
            Instantiate.Instantiator_builder.Generator_sig.override_key ->
            string * Cil_types.typ
          val generate_spec :
            Instantiate.Instantiator_builder.Generator_sig.override_key ->
            Cil_types.location -> Cil_types.fundec -> Cil_types.funspec
        end
    end
  module Transform :
    sig
      val register :
        (module Instantiate.Instantiator_builder.Generator_sig-> unit
    end
  module Global_context :
    sig
      val get_variable :
        string -> (unit -> Cil_types.varinfo) -> Cil_types.varinfo
    end
end