sig
  type t = { distributor_id : string; release : string; codename : string; }
  val codename : Sys_utils.Lsb_release.t -> string
  val release : Sys_utils.Lsb_release.t -> string
  val distributor_id : Sys_utils.Lsb_release.t -> string
  module Fields :
    sig
      val names : string list
      val codename : (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t
      val release : (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t
      val distributor_id :
        (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        distributor_id:('acc__ ->
                        (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        'acc__) ->
        release:('acc__ ->
                 (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                 'acc__) ->
        codename:('acc__ ->
                  (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                  'acc__) ->
        'acc__
      val make_creator :
        distributor_id:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        'compile_acc__ ->
                        ('input__ -> string) * 'compile_acc__) ->
        release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        'compile_acc__ ->
        ('input__ -> Sys_utils.Lsb_release.t) * 'compile_acc__
      val create :
        distributor_id:string ->
        release:string -> codename:string -> Sys_utils.Lsb_release.t
      val map :
        distributor_id:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        string) ->
        release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                 string) ->
        codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                  string) ->
        Sys_utils.Lsb_release.t
      val iter :
        distributor_id:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        unit) ->
        release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t -> unit) ->
        codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t -> unit) ->
        unit
      val for_all :
        distributor_id:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        bool) ->
        release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t -> bool) ->
        codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t -> bool) ->
        bool
      val exists :
        distributor_id:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        bool) ->
        release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t -> bool) ->
        codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t -> bool) ->
        bool
      val to_list :
        distributor_id:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                        'elem__) ->
        release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                 'elem__) ->
        codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                  'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read | `Set_and_create ], Sys_utils.Lsb_release.t, 'x0)
        Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Sys_utils.Lsb_release.t ->
            distributor_id:((Sys_utils.Lsb_release.t, string)
                            Fieldslib.Field.t ->
                            Sys_utils.Lsb_release.t -> string -> unit) ->
            release:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                     Sys_utils.Lsb_release.t -> string -> unit) ->
            codename:((Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                      Sys_utils.Lsb_release.t -> string -> unit) ->
            unit
          val fold :
            Sys_utils.Lsb_release.t ->
            init:'acc__ ->
            distributor_id:('acc__ ->
                            (Sys_utils.Lsb_release.t, string)
                            Fieldslib.Field.t ->
                            Sys_utils.Lsb_release.t -> string -> 'acc__) ->
            release:('acc__ ->
                     (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                     Sys_utils.Lsb_release.t -> string -> 'acc__) ->
            codename:('acc__ ->
                      (Sys_utils.Lsb_release.t, string) Fieldslib.Field.t ->
                      Sys_utils.Lsb_release.t -> string -> 'acc__) ->
            'acc__
        end
    end
  val query : unit -> Sys_utils.Lsb_release.t
  val t_of_sexp : Sexplib.Sexp.t -> Sys_utils.Lsb_release.t
  val sexp_of_t : Sys_utils.Lsb_release.t -> Sexplib.Sexp.t
end