sig
  type t = { name : string; passwd : string; gid : int; mem : string array; }
  val mem : Unix_syscalls.Group.t -> string array
  val gid : Unix_syscalls.Group.t -> int
  val passwd : Unix_syscalls.Group.t -> string
  val name : Unix_syscalls.Group.t -> string
  module Fields :
    sig
      val names : string list
      val mem : (Unix_syscalls.Group.t, string array) Fieldslib.Field.t
      val gid : (Unix_syscalls.Group.t, int) Fieldslib.Field.t
      val passwd : (Unix_syscalls.Group.t, string) Fieldslib.Field.t
      val name : (Unix_syscalls.Group.t, string) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        name:('acc__ ->
              (Unix_syscalls.Group.t, string) Fieldslib.Field.t -> 'acc__) ->
        passwd:('acc__ ->
                (Unix_syscalls.Group.t, string) Fieldslib.Field.t -> 'acc__) ->
        gid:('acc__ ->
             (Unix_syscalls.Group.t, int) Fieldslib.Field.t -> 'acc__) ->
        mem:('acc__ ->
             (Unix_syscalls.Group.t, string array) Fieldslib.Field.t ->
             'acc__) ->
        'acc__
      val make_creator :
        name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t ->
              'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t ->
             'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t ->
             'compile_acc__ -> ('input__ -> string array) * 'compile_acc__) ->
        'compile_acc__ ->
        ('input__ -> Unix_syscalls.Group.t) * 'compile_acc__
      val create :
        name:string ->
        passwd:string -> gid:int -> mem:string array -> Unix_syscalls.Group.t
      val map :
        name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> string) ->
        passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> string) ->
        gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t -> int) ->
        mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t ->
             string array) ->
        Unix_syscalls.Group.t
      val iter :
        name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> unit) ->
        passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> unit) ->
        gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t -> unit) ->
        mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t -> unit) ->
        unit
      val for_all :
        name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> bool) ->
        passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> bool) ->
        gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t -> bool) ->
        mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t -> bool) ->
        bool
      val exists :
        name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> bool) ->
        passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> bool) ->
        gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t -> bool) ->
        mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t -> bool) ->
        bool
      val to_list :
        name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> 'elem__) ->
        passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t -> 'elem__) ->
        gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t -> 'elem__) ->
        mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t ->
             'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read | `Set_and_create ], Unix_syscalls.Group.t, 'x0)
        Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Unix_syscalls.Group.t ->
            name:((Unix_syscalls.Group.t, string) Fieldslib.Field.t ->
                  Unix_syscalls.Group.t -> string -> unit) ->
            passwd:((Unix_syscalls.Group.t, string) Fieldslib.Field.t ->
                    Unix_syscalls.Group.t -> string -> unit) ->
            gid:((Unix_syscalls.Group.t, int) Fieldslib.Field.t ->
                 Unix_syscalls.Group.t -> int -> unit) ->
            mem:((Unix_syscalls.Group.t, string array) Fieldslib.Field.t ->
                 Unix_syscalls.Group.t -> string array -> unit) ->
            unit
          val fold :
            Unix_syscalls.Group.t ->
            init:'acc__ ->
            name:('acc__ ->
                  (Unix_syscalls.Group.t, string) Fieldslib.Field.t ->
                  Unix_syscalls.Group.t -> string -> 'acc__) ->
            passwd:('acc__ ->
                    (Unix_syscalls.Group.t, string) Fieldslib.Field.t ->
                    Unix_syscalls.Group.t -> string -> 'acc__) ->
            gid:('acc__ ->
                 (Unix_syscalls.Group.t, int) Fieldslib.Field.t ->
                 Unix_syscalls.Group.t -> int -> 'acc__) ->
            mem:('acc__ ->
                 (Unix_syscalls.Group.t, string array) Fieldslib.Field.t ->
                 Unix_syscalls.Group.t -> string array -> 'acc__) ->
            'acc__
        end
    end
  val getbyname : string -> Unix_syscalls.Group.t option Import.Deferred.t
  val getbyname_exn : string -> Unix_syscalls.Group.t Import.Deferred.t
  val getbygid : int -> Unix_syscalls.Group.t option Import.Deferred.t
  val getbygid_exn : int -> Unix_syscalls.Group.t Import.Deferred.t
  val t_of_sexp : Sexplib.Sexp.t -> Unix_syscalls.Group.t
  val sexp_of_t : Unix_syscalls.Group.t -> Sexplib.Sexp.t
end