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 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 misc :
    t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.filename) list
end