123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990open!Baseopen!ImportmoduletypeSubtyping=sig(** The subtyping scheme for accessors involves the following "feature" types. Each kind
of accessor is defined by the features it has. If an accessor A's features is a
subset of another accessor B's features, then A is a supertype of B. *)typeat_least_one=[`at_least_one]typeat_most_one=[`at_most_one]typecoerce=[`coerce]typeconstruct=[`construct]typeget=[`get]typemap=[`map]typeconstructor=constructtypeequality=[get|map|at_most_one|at_least_one|construct|coerce]typefield=[get|map|at_most_one|at_least_one]typegetter=[get|at_least_one|at_most_one]typeisomorphism=[get|map|at_most_one|at_least_one|construct]typemany=[get|map]typemany_getter=gettypemapper=maptypenonempty=[get|map|at_least_one]typenonempty_getter=[get|at_least_one]typeoptional=[get|map|at_most_one]typeoptional_getter=[get|at_most_one]typevariant=[get|map|at_most_one|construct]endwithtypeat_least_one:=[`at_least_one]andtypeat_most_one:=[`at_most_one]andtypecoerce:=[`coerce]andtypeconstruct:=[`construct]andtypeget:=[`get]andtypemap:=[`map]