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