sig
  type ('a, 'b) t =
    ('a, 'b) Fieldslib.Field.t = {
    name : string;
    setter : ('-> '-> unit) option;
    getter : '-> 'b;
    fset : '-> '-> 'a;
  }
  val name : ('a, 'b) t -> string
  val get : ('a, 'b) t -> '-> 'b
  val fset : ('a, 'b) t -> '-> '-> 'a
  val setter : ('a, 'b) t -> ('-> '-> unit) option
  type ('a, 'b) user =
    ('a, 'b) Fieldslib.Field.user = {
    f : 'c. ('a, 'c) t -> 'b;
  }
end