sig
  type lookup = As_ctx.t -> string list
  type kind =
      [ `OCamlfind
      | `Other of string * As_part_pkg.lookup As_conf.value
      | `Pkg_config ]
  val pp_kind : Format.formatter -> As_part_pkg.kind -> unit
  val kind : [< `Pkg ] As_part.t -> As_part_pkg.kind
  val lookup : [< `Pkg ] As_part.t -> As_part_pkg.lookup As_conf.value
  val opt : [< `Pkg ] As_part.t -> bool
  val ocamlfind :
    [< As_part.kind ] As_part.t -> [< As_part.kind > `Pkg ] As_part.t option
  val pkg_config :
    [< As_part.kind ] As_part.t -> [< As_part.kind > `Pkg ] As_part.t option
  val other :
    [< As_part.kind ] As_part.t -> [< As_part.kind > `Pkg ] As_part.t option
  val v :
    ?usage:As_part.usage ->
    ?exists:bool As_conf.value ->
    ?opt:bool ->
    string -> As_part_pkg.kind -> [< As_part.kind > `Pkg ] As_part.t
  val list_lookup :
    [< As_part.kind ] As_part.t list -> As_part_pkg.lookup As_conf.value
end