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