sig   module type IO_FILE =     sig       type t       val empty : OpamFile.IO_FILE.t       val write : OpamTypes.filename -> OpamFile.IO_FILE.t -> unit       val read : OpamTypes.filename -> OpamFile.IO_FILE.t       val safe_read : OpamTypes.filename -> OpamFile.IO_FILE.t       val read_from_channel : Pervasives.in_channel -> OpamFile.IO_FILE.t       val write_to_channel :         Pervasives.out_channel -> OpamFile.IO_FILE.t -> unit     end   module Lines :     sig       type t = string list list       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Config :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val create :         OpamTypes.switch ->         OpamTypes.repository_name list ->         ?criteria:(OpamTypes.solver_criteria * string) list ->         ?solver:OpamTypes.arg list ->         int -> ?download_tool:OpamTypes.arg list -> int -> t       val with_switch : t -> OpamTypes.switch -> t       val with_repositories : t -> OpamTypes.repository_name list -> t       val with_current_opam_version : t -> t       val with_criteria : t -> (OpamTypes.solver_criteria * string) list -> t       val with_solver : t -> OpamTypes.arg list option -> t       val opam_version : t -> OpamTypes.opam_version       val repositories : t -> OpamTypes.repository_name list       val switch : t -> OpamTypes.switch       val jobs : t -> int       val dl_tool : t -> OpamTypes.arg list option       val dl_jobs : t -> int       val criteria : t -> (OpamTypes.solver_criteria * string) list       val solver : t -> OpamTypes.arg list option     end   module OPAM :     sig       type t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val empty : t       val create : OpamTypes.package -> t       val template : OpamTypes.package -> t       val validate : t -> (int * [ `Error | `Warning ] * string) list       val validate_file :         OpamTypes.filename ->         (int * [ `Error | `Warning ] * string) list * t option       val warns_to_string :         (int * [ `Error | `Warning ] * string) list -> string       val is_explicit : OpamTypes.filename -> bool       val opam_version : t -> OpamTypes.opam_version       val name : t -> OpamTypes.name       val name_opt : t -> OpamTypes.name option       val version : t -> OpamTypes.version       val version_opt : t -> OpamTypes.version option       val ocaml_version : t -> OpamTypes.compiler_constraint option       val os : t -> (bool * string) OpamTypes.generic_formula       val available : t -> OpamTypes.filter       val maintainer : t -> string list       val substs : t -> OpamTypes.basename list       val build_env : t -> (string * string * string) list       val build : t -> OpamTypes.command list       val install : t -> OpamTypes.command list       val remove : t -> OpamTypes.command list       val depends : t -> OpamTypes.ext_formula       val depopts : t -> OpamTypes.ext_formula       val depexts : t -> OpamTypes.tags option       val with_messages : t -> (string * OpamTypes.filter option) list -> t       val with_post_messages :         t -> (string * OpamTypes.filter option) list -> t       val conflicts : t -> OpamTypes.formula       val features : t -> (OpamVariable.t * string * OpamTypes.filter) list       val libraries : t -> (string * OpamTypes.filter option) list       val syntax : t -> (string * OpamTypes.filter option) list       val patches : t -> (OpamTypes.basename * OpamTypes.filter option) list       val homepage : t -> string list       val author : t -> string list       val license : t -> string list       val doc : t -> string list       val tags : t -> string list       val build_test : t -> OpamTypes.command list       val build_doc : t -> OpamTypes.command list       val messages : t -> (string * OpamTypes.filter option) list       val post_messages : t -> (string * OpamTypes.filter option) list       val bug_reports : t -> string list       val flags : t -> OpamTypes.package_flag list       val has_flag : OpamTypes.package_flag -> t -> bool       val with_opam_version : t -> OpamTypes.opam_version -> t       val dev_repo : t -> OpamTypes.pin_option option       val with_name : t -> OpamTypes.name -> t       val with_name_opt : t -> OpamTypes.name option -> t       val with_version : t -> OpamTypes.version -> t       val with_version_opt : t -> OpamTypes.version option -> t       val with_depends : t -> OpamTypes.ext_formula -> t       val with_depopts : t -> OpamTypes.ext_formula -> t       val with_conflicts : t -> OpamTypes.formula -> t       val with_features :         t -> (OpamVariable.t * string * OpamTypes.filter) list -> t       val with_build : t -> OpamTypes.command list -> t       val with_install : t -> OpamTypes.command list -> t       val with_remove : t -> OpamTypes.command list -> t       val with_libraries : t -> (string * OpamTypes.filter option) list -> t       val with_syntax : t -> (string * OpamTypes.filter option) list -> t       val with_substs : t -> OpamTypes.basename list -> t       val with_ocaml_version : t -> OpamTypes.compiler_constraint option -> t       val with_os : t -> (bool * string) OpamTypes.generic_formula -> t       val with_available : t -> OpamTypes.filter -> t       val with_maintainer : t -> string list -> t       val with_patches :         t -> (OpamTypes.basename * OpamTypes.filter option) list -> t       val with_bug_reports : t -> string list -> t       val with_depexts : t -> OpamTypes.tags option -> t       val with_flags : t -> OpamTypes.package_flag list -> t       val with_dev_repo : t -> OpamTypes.pin_option option -> t       val to_1_0 : OpamTypes.file -> OpamTypes.file     end   module Descr :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val of_string : string -> t       val synopsis : t -> string       val body : t -> string       val full : t -> string     end   module Aliases :     sig       type t = OpamTypes.compiler OpamTypes.switch_map       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Export :     sig       type t =           OpamTypes.package_set * OpamTypes.package_set *           OpamTypes.pin_option OpamPackage.Name.Map.t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Installed :     sig       type t = OpamTypes.package_set       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Installed_roots :     sig       type t = OpamTypes.package_set       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Reinstall :     sig       type t = OpamTypes.package_set       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Comp :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val create_preinstalled :         OpamTypes.compiler ->         OpamTypes.compiler_version ->         OpamTypes.name list -> (string * string * string) list -> t       val preinstalled : t -> bool       val opam_version : t -> OpamTypes.opam_version       val name : t -> OpamTypes.compiler       val version : t -> OpamTypes.compiler_version       val src : t -> OpamTypes.address option       val kind : t -> OpamTypes.repository_kind       val patches : t -> OpamTypes.filename list       val configure : t -> string list       val make : t -> string list       val build : t -> OpamTypes.command list       val packages : t -> OpamTypes.formula       val env : t -> (string * string * string) list       val with_src : t -> OpamTypes.address option -> t       val with_patches : t -> OpamTypes.filename list -> t       val with_configure : t -> string list -> t       val with_make : t -> string list -> t       val with_build : t -> OpamTypes.command list -> t       val with_packages : t -> OpamTypes.formula -> t       val to_1_0 : OpamTypes.file -> OpamTypes.file     end   module Dot_install :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val bin :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val sbin :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val lib :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val toplevel :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val stublibs :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val share :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val share_root :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val etc :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val doc :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val man :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val libexec :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option)         list       val misc :         t ->         (OpamTypes.basename OpamTypes.optional * OpamTypes.filename) list     end   module Dot_config :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val create :         (OpamTypes.variable * OpamTypes.variable_contents) list -> t       val variable :         t -> OpamTypes.variable -> OpamTypes.variable_contents option       val variables : t -> OpamTypes.variable list     end   module Package_index :     sig       type t =           (OpamTypes.repository_name * string option) OpamTypes.package_map       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Compiler_index :     sig       type t =           (OpamTypes.repository_name * string option) OpamTypes.compiler_map       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Repo_config :     sig       type t = OpamTypes.repository       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Pinned :     sig       type t = OpamTypes.pin_option OpamTypes.name_map       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Repo :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val create :         ?browse:string ->         ?upstream:string ->         ?opam_version:string ->         ?redirect:(string * OpamTypes.filter option) list -> unit -> t       val opam_version : t -> OpamVersion.t       val browse : t -> string option       val upstream : t -> string option       val redirect : t -> (string * OpamTypes.filter option) list     end   module URL :     sig       type t       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit       val create :         OpamTypes.repository_kind ->         ?mirrors:OpamTypes.address list -> OpamTypes.address -> t       val url : t -> OpamTypes.address       val mirrors : t -> OpamTypes.address list       val kind : t -> OpamTypes.repository_kind       val checksum : t -> string option       val with_checksum : t -> string -> t     end   module File_attributes :     sig       type t = OpamTypes.file_attribute_set       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Filenames :     sig       type t = OpamTypes.filename_set       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   module Prefix :     sig       type t = string OpamTypes.name_map       val empty : t       val write : OpamTypes.filename -> t -> unit       val read : OpamTypes.filename -> t       val safe_read : OpamTypes.filename -> t       val read_from_channel : in_channel -> t       val write_to_channel : out_channel -> t -> unit     end   val print_stats : unit -> unit end